天天看點

ServiceStage-華為微服務開發與管理平台

前言  

  在上一篇文章 一年前,我來到國企搞IT 中,和小夥伴分享了我在國企這一年當中的所見,所聞,所想,很高興能夠獲得很多同道中人的共鳴。過去一年,我的很大一部分工作都投入到公司技術平台的建設中。Jira,Confluence,Jenkins,Docker,Kubernetes,微服務等等DevOps工具鍊,技術棧,都是從無到有一步一步搭建起來的,這其中雖然有第三方供應商的支撐,但過程還是非常艱難的。在數字化轉型的大浪潮下,各式各樣的IT系統也随之立項,落地,從以前的單體,到要求越來越多的微服務架構,以及帶來後續日漸繁雜的監控運維工作,無不對IT的技術能力有了更高的要求,也讓本就缺乏IT技術大拿的國企資訊面臨諸多的挑戰。實話說,這一年的工作也讓我成長了很多!

  正因為有如上諸多的問題,尋找一個穩定的企業級的微服務開發運維平台,是眼前比較清晰的方向。由于公司與華為長期的戰略合作關系,華為的微服務開發與運維管理平台ServiceStage,走入我們的視野。搜尋了一下全網,确實沒有發現涉及ServiceStage方面的文章。是以,在接下來的幾篇文章中,我将以真實的POC驗證角度,通過改造遷移公司已有的一個微服務項目,一步一為大家分享如何接入ServiceStage、CSE等華為已有的企業級Paas平台,也歡迎朋友幫忙評估建議ServiceStage的能力。

ServiceStage

  ServiceStage是一個應用托管和微服務管理平台,可以幫助企業簡化部署、監控、運維和治理等應用生命周期管理工作。面向企業提供微服務、移動和Web類應用開發的全棧解決方案,幫助您的各類應用輕松上雲,聚焦業務創新,幫助企業數字化快速轉型。

以下是ServiceStage提供的能力概況,從整張生态圖來講,确實提供的能力是很全面的,跟多應用場景可參考 。

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啟動

ServiceStage-華為微服務開發與管理平台

 啟動成功之後,通路http://localhost:30106/ 即可看到本地版的CSE控制台頁面。

ServiceStage-華為微服務開發與管理平台

application.yml改動

spring:
  cloud:
    servicecomb:
      discovery:
        address: http://127.0.0.1:30100 --30100為服務注冊端口      
ServiceStage-華為微服務開發與管理平台

main app保留注解,并啟動

@EnableDiscoveryClient      

成功之後,便可以在CSE控制台看見注冊成功的服務清單

ServiceStage-華為微服務開發與管理平台

 配置中心改造

配置中心的改造也比較簡單,移除原有的配置中心依賴,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

ServiceStage-華為微服務開發與管理平台

 測試通路

ServiceStage-華為微服務開發與管理平台

 修改配置檔案,将dd改為其他值,測試refreshscope功能,可見配置自動更新。

ServiceStage-華為微服務開發與管理平台

日志列印

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]]      

重新通路服務,配置已更新

ServiceStage-華為微服務開發與管理平台

網關

網關目前依舊是Spring Cloud ApiGateway的方式,無需額外配置。

以上為主要微服務元件的改造工作,其他微服務治理相關,目前huawei還在疊代中,後續我們将改造的微服務部署在華為雲上。

<End>

小墨唯一公衆号 《DevOps特種部隊》,分享我在國企數字化轉型中,DevOps領域所有相關技術棧,也包含職場的苦與樂,希望各位朋友搜尋或者掃描下方圖檔一鍵關注,給個支援!

ServiceStage-華為微服務開發與管理平台