您好,登錄后才能下訂單哦!
今天小編給大家分享一下Spring Cloud Alibaba整合Nacos使用的方法是什么的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
近些年,隨著微服務(wù)框架在越來越多的公司產(chǎn)品中實(shí)踐落地,以Spring Cloud Alibaba為導(dǎo)向的一站式微服務(wù)解決方案也成為微服務(wù)實(shí)踐和運(yùn)用的風(fēng)向標(biāo),Spring Cloud Alibaba提供了越來越完善的各類微服務(wù)治理組件,比如分布式服務(wù)配置與注冊中心nacos,服務(wù)限流、熔斷組件sentinel等。
為什么需要注冊中心呢?簡單來說,隨著微服務(wù)的個(gè)數(shù)增多,規(guī)模增大,再向以往那樣,兩個(gè)微服務(wù)之間直接通過拼接完整的請(qǐng)求url調(diào)用的話,微服務(wù)的維護(hù)成本將是巨大的,也不便于后續(xù)微服務(wù)的API統(tǒng)一治理。
事實(shí)上,微服務(wù)化的目的就是為了減少服務(wù)間的緊密耦合,同時(shí),一定程度上減少服務(wù)與服務(wù)之間調(diào)用時(shí)更多的信息暴露,更直接點(diǎn)來說,就是說服務(wù)與服務(wù)之間的調(diào)用應(yīng)該是去中心化的調(diào)用,而注冊中心的好處就是為了達(dá)到此目的,注冊中心提供了一種服務(wù)與服務(wù)之間互相發(fā)現(xiàn)的機(jī)制,通過注冊中心,微服務(wù)提供的各類服務(wù)資源可以被統(tǒng)一納管,進(jìn)行集中式管理,這就是注冊中心的好處。
下面是dubbo核心的經(jīng)典的服務(wù)注冊與調(diào)用示意圖,其服務(wù)治理的核心就是注冊中心:Registry的存在。
下圖列舉了常用的幾種分布式配置中心各個(gè)功能的對(duì)比,其他更多的配置中心,像eureka,zk,consul等也是可以使用的,具體可結(jié)合實(shí)際場景進(jìn)行選擇;
從上面的表的數(shù)據(jù)對(duì)比來看,springcloud alibaba為了更好的治理和打造自身的微服務(wù)生態(tài)體系,最終選擇了自研的nacos,nacos即是分布式服務(wù)注冊中心,同時(shí)也可以作為分布式配置中心使用,而且基于界面可視化操作客戶端,提供了完善的治理方案。
一個(gè)更易于構(gòu)建云原生應(yīng)用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn)(Nacos Discovery )、服務(wù)配置(Nacos Config)和服務(wù)管理平臺(tái)。
nacos的主要特點(diǎn)如下:
服務(wù)發(fā)現(xiàn)和服務(wù)健康監(jiān)測;
動(dòng)態(tài)配置服務(wù);
動(dòng)態(tài) DNS 服務(wù);
服務(wù)及其元數(shù)據(jù)管理;
簡而言之
nacos 用于管理所有微服務(wù)、解決微服務(wù)之間調(diào)用關(guān)系錯(cuò)綜復(fù)雜、難以維護(hù)的問題;
下圖詳細(xì)介紹了nacos的生態(tài),優(yōu)勢,業(yè)務(wù),架構(gòu)等多維度的全景圖,由此可見,作為springcloud-alibaba微服務(wù)生態(tài)體系下的一款組件,其位置是非常重要的。
nacos在單機(jī)環(huán)境下安裝部署非常簡單,只需要下載好安裝包之后,執(zhí)行bin目錄下的啟動(dòng)腳本即可快速啟動(dòng)服務(wù),下面是完整的流程。
也可以根據(jù)自身的需要選擇合適的版本下載使用。
選擇完版本后,可以選擇linux或者windows環(huán)境的安裝包下載即可;
這里選擇了zip壓縮包
nacos啟動(dòng)腳本里面提供了集群模式和單機(jī)模式啟動(dòng)兩種方式,由于本機(jī)搭建使用,選用單機(jī)模式即可,修改啟動(dòng)腳本中如下的關(guān)鍵參數(shù);
修改并保存腳本之后,雙擊啟動(dòng)服務(wù)
啟動(dòng)成功之后,按上圖中地址訪問nacos的客戶端控制臺(tái),默認(rèn)登錄用戶名和密碼:nacos/nacos
登錄成功后,看到如下的控制臺(tái)界面;
在真正進(jìn)行代碼整合之前,一定要弄清springloud alibaba版本選擇的事情,很多同學(xué)在這里由于沒弄清springloud alibaba與springboot的版本依賴,兼容性導(dǎo)致在整合過程中遇到較多的問題;
下面摘取git中關(guān)于各個(gè)版本選型的詳細(xì)對(duì)照,git地址:各版本依賴關(guān)系地址,最重要的就是springboot的版本與Spring Cloud Alibaba 版本的依賴關(guān)系;
需求說明
1、創(chuàng)建兩個(gè)微服務(wù),order(訂單)微服務(wù),和stock(庫存)微服務(wù);
2、將兩個(gè)微服務(wù)注冊到nacos,通過nacos實(shí)現(xiàn)order服務(wù)對(duì)stock服務(wù)的調(diào)用;
有更多需要管理的jar,統(tǒng)一在dependencyManagement中加入即可;
<!-- 統(tǒng)一管理jar包版本 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <log4j.version>1.2.17</log4j.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.2.2.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Hoxton.SR1</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2.1.0.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
這里暫時(shí)只需要導(dǎo)入springboot-web以及nacos的客戶端即可;
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--nacos-config 配置中心-自帶動(dòng)態(tài)刷新--> <!--<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>--> <!--nacos-discovery 注冊中心-服務(wù)發(fā)現(xiàn)與注冊--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
stock模塊配置文件
server: port: 8085 spring: application: name: stock-service cloud: nacos: discovery: server-addr: localhost:8848 #服務(wù)注冊中心地址 #config: #server-addr: localhost:8848 #配置中心地址
order模塊配置文件
server: port: 8083 spring: application: name: order-service cloud: nacos: discovery: server-addr: localhost:8848 #服務(wù)注冊中心地址 #config: #server-addr: localhost:8848 #配置中心地址 service-url: nacos-user-service: http://stock-service
在stock模塊中添加一個(gè)扣減庫存的接口,給下單接口使用
@RestController @RequestMapping("/stock") public class StockController { @GetMapping("/reduct") public String reduct(){ System.out.println("扣減庫存"); return "扣減庫存"; } }
@RestController @RequestMapping("/order") public class OrderController { @Autowired RestTemplate restTemplate; @Value("${service-url.nacos-user-service}") private String serverURL; //localhost:8083/order/add @GetMapping("/add") public String add(){ System.out.println("下單成功"); //String forObject = restTemplate.getForObject("http://localhost:8082/stock/reduct", String.class); String forObject = restTemplate.getForObject(serverURL + "/stock/reduct", String.class); System.out.println(forObject); return "add order :" + forObject; } }
兩個(gè)模塊的啟動(dòng)類上面都加上@EnableDiscoveryClient 注解
@SpringBootApplication @EnableDiscoveryClient public class OrderApp { public static void main(String[] args) { SpringApplication.run(OrderApp.class,args); } }
由于spring-cloud-starter-alibaba-nacos-discovery默認(rèn)集成的是Ribbon,我們知道Ribbon是基于客戶端的負(fù)載均衡實(shí)現(xiàn),所以這里的LoadBalancerClient的實(shí)現(xiàn)類是RibbonLoadBalancerClient,由Ribbon實(shí)現(xiàn)對(duì)RestTemplate的負(fù)載均衡,在當(dāng)前的兩個(gè)工程模塊中,order作為客戶端,所以需要在order模塊中添加一個(gè)RestTemplate的配置類,并使用LoadBalanced注解進(jìn)行修飾;
@Configuration public class RestConfig { @Bean @LoadBalanced public RestTemplate restTemplate(){ return new RestTemplate(); } }
啟動(dòng)nacos,然后依次啟動(dòng)stock服務(wù),order服務(wù),在工程啟動(dòng)的時(shí)候,注意下面的關(guān)鍵信息,說明服務(wù)注冊到了nacos;
啟動(dòng)完成之后,再次檢查nacos的服務(wù)列表,可以發(fā)現(xiàn)上面正是兩個(gè)工程的服務(wù)名;
瀏覽器調(diào)用order模塊的下單接口:localhost:8083/order/add,看到如下效果,說明通過nacos實(shí)現(xiàn)對(duì)微服務(wù)的調(diào)用就成功了
以上就是“Spring Cloud Alibaba整合Nacos使用的方法是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。