前言
在上一篇文章 一年前,我來到國企搞IT 中,和小夥伴分享了我在國企這一年當中的所見,所聞,所想,很高興能夠獲得很多同道中人的共鳴。過去一年,我的很大一部分工作都投入到公司技術平台的建設中。Jira,Confluence,Jenkins,Docker,Kubernetes,微服務等等DevOps工具鍊,技術棧,都是從無到有一步一步搭建起來的,這其中雖然有第三方供應商的支撐,但過程還是非常艱難的。在數字化轉型的大浪潮下,各式各樣的IT系統也随之立項,落地,從以前的單體,到要求越來越多的微服務架構,以及帶來後續日漸繁雜的監控運維工作,無不對IT的技術能力有了更高的要求,也讓本就缺乏IT技術大拿的國企資訊面臨諸多的挑戰。實話說,這一年的工作也讓我成長了很多!
正因為有如上諸多的問題,尋找一個穩定的企業級的微服務開發運維平台,是眼前比較清晰的方向。由于公司與華為長期的戰略合作關系,華為的微服務開發與運維管理平台ServiceStage,走入我們的視野。搜尋了一下全網,确實沒有發現涉及ServiceStage方面的文章。是以,在接下來的幾篇文章中,我将以真實的POC驗證角度,通過改造遷移公司已有的一個微服務項目,一步一為大家分享如何接入ServiceStage、CSE等華為已有的企業級Paas平台,也歡迎朋友幫忙評估建議ServiceStage的能力。
ServiceStage
ServiceStage是一個應用托管和微服務管理平台,可以幫助企業簡化部署、監控、運維和治理等應用生命周期管理工作。面向企業提供微服務、移動和Web類應用開發的全棧解決方案,幫助您的各類應用輕松上雲,聚焦業務創新,幫助企業數字化快速轉型。
以下是ServiceStage提供的能力概況,從整張生态圖來講,确實提供的能力是很全面的,跟多應用場景可參考 。

微服務改造
由于之前大部分項目都是通過Spring Cloud全家桶進行架構的,這裡我們直接使用Spring Cloud Huawei來改造我們已有的微服務架構。
官方文檔: https://support.huaweicloud.com/devg-servicestage/cse_java_0054.html
項目位址: https://github.com/huaweicloud
注冊中心改造
pom引入,這裡直接引入huawei ServiceComb服務注冊元件,移除consul的依賴。
<dependency>
<groupId>com.huaweicloud</groupId>
<artifactId>spring-cloud-starter-huawei-servicecomb-discovery</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-consul-discovery</artifactId>-->
<!-- </dependency>-->
application.yml指向注冊中心。這裡由于暫時是本地改造微服務架構,沒有連接配接雲上的微服務管控控制台,是以這裡直接下載下傳Local CSE的用戶端,點選start.bat啟動
啟動成功之後,通路http://localhost:30106/ 即可看到本地版的CSE控制台頁面。
application.yml改動
spring:
cloud:
servicecomb:
discovery:
address: http://127.0.0.1:30100 --30100為服務注冊端口
main app保留注解,并啟動
@EnableDiscoveryClient
成功之後,便可以在CSE控制台看見注冊成功的服務清單
配置中心改造
配置中心的改造也比較簡單,移除原有的配置中心依賴,pom引入spring-cloud-starter-huawei-config
<!-- <dependency>-->
<!-- <groupId>org.springframework.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-config</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>com.huaweicloud</groupId>
<artifactId>spring-cloud-starter-huawei-config</artifactId>
</dependency>
bootstrap.yml替換原有的spring cloud config配置中心的方式,如下
spring:
application:
name: admin
cloud:
servicecomb:
config:
serverAddr: http://127.0.0.1:30113
watch:
delay: 10000
credentials:
enabled: false
測試配置中心
@RefreshScope
@RestController
@RequestMapping("/servicestage")
public class ServiceStageController implements ApplicationListener<ConfigRefreshEvent> {
@Value("${dd:}")
private String dd;
@RequestMapping("/price")
public String sayHello(@RequestParam("id") String id) {
return "price ---> " + id;
}
@Override
public void onApplicationEvent(ConfigRefreshEvent event) {
System.out.println("change = [" + event.getChange() + "]");
}
}
通路 http://localhost:30106/#/cse/services/config,添加配置,作用域下拉清單可選擇作用于哪個服務,配置key, value
測試通路
修改配置檔案,将dd改為其他值,測試refreshscope功能,可見配置自動更新。
日志列印
2020-11-24 13:31:22.558 [ThreadPoolTaskScheduler-1] DEBUG o.s.core.env.PropertySourcesPropertyResolver - Found key \'dd\' in PropertySource \'bootstrapProperties\' with value of type String
2020-11-24 13:31:22.558 [ThreadPoolTaskScheduler-1] DEBUG o.s.core.env.PropertySourcesPropertyResolver - Found key \'dd\' in PropertySource \'bootstrapProperties\' with value of type String
2020-11-24 13:31:22.559 [ThreadPoolTaskScheduler-1] DEBUG o.s.core.env.PropertySourcesPropertyResolver - Found key \'dd\' in PropertySource \'bootstrapProperties\' with value of type String
2020-11-24 13:31:22.559 [ThreadPoolTaskScheduler-1] DEBUG o.s.core.env.PropertySourcesPropertyResolver - Found key \'dd\' in PropertySource \'environmentProperties\' with value of type String
change = [[dd]]
重新通路服務,配置已更新
網關
網關目前依舊是Spring Cloud ApiGateway的方式,無需額外配置。
以上為主要微服務元件的改造工作,其他微服務治理相關,目前huawei還在疊代中,後續我們将改造的微服務部署在華為雲上。
<End>
小墨唯一公衆号 《DevOps特種部隊》,分享我在國企數字化轉型中,DevOps領域所有相關技術棧,也包含職場的苦與樂,希望各位朋友搜尋或者掃描下方圖檔一鍵關注,給個支援!