前言
在上一篇文章 一年前,我來到國企搞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領域所有相關技術棧,也包含職場的苦與樂,希望各位朋友搜尋或者掃描下方圖片一鍵關注,給個支援!