自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Sidecar模式助力Spring Cloud,實(shí)現(xiàn)跨語言微服務(wù)高效協(xié)同

開發(fā) 架構(gòu)
Spring Cloud Alibaba Sidecar(以下簡(jiǎn)稱:SCA Sidecar)能夠有效地整合異構(gòu)微服務(wù),解決在微服務(wù)架構(gòu)中由于技術(shù)棧、語言或平臺(tái)差異導(dǎo)致的兼容性和通信問題。在什么場(chǎng)景下需要使用Sidecar呢?

環(huán)境:SpringBoot2.7.18 + Spring Cloud Alibaba Sidecar

1. 簡(jiǎn)介

Spring Cloud Alibaba Sidecar(以下簡(jiǎn)稱:SCA Sidecar)能夠有效地整合異構(gòu)微服務(wù),解決在微服務(wù)架構(gòu)中由于技術(shù)棧、語言或平臺(tái)差異導(dǎo)致的兼容性和通信問題。在什么場(chǎng)景下需要使用Sidecar呢?以下總結(jié)4點(diǎn):

  • 多語言微服務(wù)整合:當(dāng)微服務(wù)架構(gòu)中涉及多種編程語言和框架時(shí),Spring Cloud Alibaba Sidecar可以作為代理服務(wù),實(shí)現(xiàn)不同語言微服務(wù)之間的通信和協(xié)調(diào)。
  • 跨平臺(tái)服務(wù)集成:對(duì)于部署在不同平臺(tái)或容器化環(huán)境中的微服務(wù),Sidecar能夠提供一個(gè)統(tǒng)一的接口和協(xié)議,簡(jiǎn)化跨平臺(tái)的服務(wù)調(diào)用和集成。
  • 服務(wù)治理與監(jiān)控:Sidecar可以協(xié)助實(shí)現(xiàn)服務(wù)的注冊(cè)與發(fā)現(xiàn)、負(fù)載均衡、熔斷降級(jí)等治理功能,并提供統(tǒng)一的監(jiān)控和日志收集機(jī)制,提高系統(tǒng)的可觀測(cè)性。
  • 老項(xiàng)目整合:那些由于版本限制或其他原因不適合引入整個(gè)如Nacos這樣的注冊(cè)中心的項(xiàng)目,Spring Cloud Alibaba  Sidecar成為了一個(gè)非常合適的解決方案。通過使用Sidecar,解決了老項(xiàng)目在微服務(wù)化過程中的兼容性和集成難題。

2. SCA SideCar原理

  • SCA Sidecar根據(jù)配置的異構(gòu)微服務(wù)的IP、端口等信息,將異構(gòu)微服務(wù)的IP/端口注冊(cè)到服務(wù)發(fā)現(xiàn)組件上 。
  • SCA Sidecar實(shí)現(xiàn)了 健康檢查 ,SCA Sidecar會(huì)定時(shí)檢測(cè)異構(gòu)微服務(wù)是否健康。如果發(fā)現(xiàn)異構(gòu)微服務(wù)不健康,SCASidecar會(huì)自動(dòng)將代表異構(gòu)微服務(wù)的SCASidecar實(shí)例下線;如果異構(gòu)微服務(wù)恢復(fù)正常,則會(huì)自動(dòng)上線。

使用要求:

  • 【必須】你的異構(gòu)微服務(wù)需使用HTTP通信。這一點(diǎn)嚴(yán)格來說不算要求,因?yàn)镾pring Cloud本身就是基于HTTP的;
  • 【可選】如果微服務(wù)配置了 sidecar.health-check-url ,則表示開啟健康檢查,此時(shí),你的異構(gòu)微服務(wù)需實(shí)現(xiàn)健康檢查(可以是空實(shí)現(xiàn),只要暴露一個(gè)端點(diǎn),返回類似 {"status": "UP"} 的字符串即可)。

3. 實(shí)戰(zhàn)案例

3.1 準(zhǔn)備異構(gòu)項(xiàng)目

為了簡(jiǎn)單起見,我也不用其它語言實(shí)現(xiàn)一個(gè)服務(wù)了,還是用SpringBoot項(xiàng)目做試驗(yàn),大家可以使用其它語言如:NodeJS,C#等語言實(shí)現(xiàn)。

該服務(wù)非常簡(jiǎn)單就提供一個(gè)業(yè)務(wù)接口,和一個(gè)健康檢查所需要的接口,如下:

業(yè)務(wù)接口

@RestController
@RequestMapping("/users")
public class UsersController {
  
  @GetMapping("normal")
  public Object index() {
    return "正常請(qǐng)求" ;
  }
}

健康檢查接口

該接口的作用:上線 / 下線 該異構(gòu)服務(wù)(我這當(dāng)前就是SpringBoot服務(wù))。

@RestController
@RequestMapping("/health")
public class HealthController {
  
  @GetMapping("")
  public Object health() {
    // 該打印是為了一會(huì)測(cè)試看效果
    System.out.println("服務(wù)狀態(tài)...") ;
    Map<String, Object> status = new HashMap<>() ;
    // 注意:這里必須是status,value必須是大寫的UP
    status.put("status", "UP") ;
    return status ;
  }
}

配置文件

server.port=8080

該異構(gòu)服務(wù)并沒有依賴Spring Cloud相關(guān)的任何組件就是一個(gè)非常普通的項(xiàng)目。

3.2 準(zhǔn)備Sidecar服務(wù)

引入依賴

<dependency>
  <groupId>com.alibaba.cloud</groupId>
  <artifactId>spring-cloud-starter-alibaba-sidecar</artifactId>
</dependency>

服務(wù)配置

spring:
  application:
    name: pack-car
---
spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      username: nacos
      password: xxxooo
      discovery:
        enabled: true
        group: cloudApp
---
management:
  health:
    sidecar:
      enabled: true
---
# 這里的配置就是我們異構(gòu)服務(wù)的相關(guān)信息
sidecar:
  ip: localhost
  port: 8088
  # 間隔多久進(jìn)行一次監(jiān)控檢查,單位ms
  health-check-interval: 5000
  # 監(jiān)控檢查的URL,上面3.1中定義的接口
  health-check-url: http://${sidecar.ip}:${sidecar.port}/health

以上就做完了關(guān)于Sidecar服務(wù)的所有工作,我們只需要配置不需要任何的代碼。  注意:上面配置的nacos服務(wù)發(fā)現(xiàn)端口和ip都會(huì)被修改為Sidecar配置的ip及端口,Sidecar內(nèi)部實(shí)現(xiàn)的,有興趣可以研究下源碼非常簡(jiǎn)單。

接下來就可以分別啟動(dòng)上面兩個(gè)服務(wù)測(cè)試,我們首先啟動(dòng)Sidecar服務(wù),控制臺(tái)將輸出如下信息:

圖片

請(qǐng)求了我們的異構(gòu)服務(wù),但是我們的異構(gòu)服務(wù)并沒有啟動(dòng)所以是失敗狀態(tài)。

啟動(dòng)異構(gòu)服務(wù),再次查看Sidecar控制臺(tái)輸出

圖片

成功了,再查看異構(gòu)服務(wù)控制臺(tái)

圖片圖片

查看Nacos控制臺(tái)

圖片圖片

成功注冊(cè)異構(gòu)服務(wù),注意查看端口。

3.3 調(diào)用異構(gòu)服務(wù)接口

接下來我們還需要一個(gè)服務(wù),該服務(wù)也需要注冊(cè)到nacos中,然后我們?cè)谶@個(gè)服務(wù)中調(diào)用異構(gòu)服務(wù)接口。

相關(guān)的依賴配置就不說了非常簡(jiǎn)單,下面我們就看能否通過服務(wù)發(fā)現(xiàn)成功調(diào)用異構(gòu)服務(wù)的接口。

該服務(wù)的服務(wù)名為

spring.appliation.name=myapp
server.port=8100

啟動(dòng)服務(wù)查看服務(wù)是否成功注冊(cè)到Nacos

圖片圖片


服務(wù)成功注冊(cè)。

配置RestTemplate

@Bean
@LoadBalanced
RestTemplate lbRestTemplate(RestTemplateBuilder builder) {
  return builder.build() ; 
}

通過RestTemplate調(diào)用上異構(gòu)服務(wù)/users接口。

@Resource
private RestTemplate lbRestTemplate ;


@GetMapping("/lb")
@ResponseBody
public Object lb() {
  // 通過服務(wù)名請(qǐng)求
  return this.lbRestTemplate.getForObject("http://pack-car/users/normal", String.class) ;
}


圖片圖片

請(qǐng)求成功。

到此就完成了通過Sidecar整合異構(gòu)系統(tǒng)。

責(zé)任編輯:武曉燕 來源: Spring全家桶實(shí)戰(zhàn)案例源碼
相關(guān)推薦

2022-07-13 13:34:30

微服務(wù)邊車SideCar

2020-06-30 07:58:39

微服務(wù)Spring BootCloud

2017-09-05 14:05:11

微服務(wù)spring clou路由

2023-03-20 08:00:00

公共云開發(fā)Spring Clo

2021-12-14 06:59:39

微服務(wù)Kubernetes架構(gòu)

2024-02-06 18:05:54

微服務(wù)SpringCloud

2018-06-01 23:08:01

Spring Clou微服務(wù)服務(wù)器

2017-06-26 09:06:10

Spring Clou微服務(wù)架構(gòu)

2024-08-05 10:03:53

2024-07-10 10:51:39

SpringEureka數(shù)據(jù)中心

2023-12-19 09:33:40

微服務(wù)監(jiān)控

2017-09-04 16:15:44

服務(wù)網(wǎng)關(guān)架構(gòu)

2024-11-21 16:09:22

2021-10-19 14:02:12

服務(wù)器SpringSecurity

2017-12-20 15:37:39

Spring Clou微服務(wù)架構(gòu)

2017-07-03 09:50:07

Spring Clou微服務(wù)架構(gòu)

2017-08-10 11:15:05

Spring Clou微服務(wù)架構(gòu)

2017-08-09 15:50:47

Spring Clou微服務(wù)架構(gòu)

2022-07-17 11:45:39

微服務(wù)架構(gòu)

2018-07-09 09:27:10

Spring Clou微服務(wù)架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)