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

抗爭的小墨發表於2020-11-24

前言  

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

 

相關文章