一、什么是注冊(cè)中心?
注冊(cè)中心, 也稱命名服務(wù)(Naming servive), 它的核心功能與DNS服務(wù)類似, 無非就是通過一個(gè)特定的名字來查找相關(guān)的實(shí)例集合, 但是它們也有很多不同點(diǎn)
二、Eureka 和 Nacos 的區(qū)別
Nacos與eureka的共同點(diǎn)
- 都支持服務(wù)注冊(cè)和服務(wù)拉取
- 都支持服務(wù)提供者心跳方式做健康檢測
Nacos與Eureka的區(qū)別
- Nacos支持服務(wù)端主動(dòng)檢測提供者狀態(tài):臨時(shí)實(shí)例采用心跳模式,非臨時(shí)實(shí)例采用主動(dòng)檢測模式
- 臨時(shí)實(shí)例心跳不正常會(huì)被剔除,非臨時(shí)實(shí)例則不會(huì)被剔除
- Nacos支持服務(wù)列表變更的消息推送模式,服務(wù)列表更新更及時(shí)
- Nacos集群默認(rèn)采用AP方式,當(dāng)集群中存在非臨時(shí)實(shí)例時(shí),采用CP模式;Eureka采用AP方式
三、什么是 SpringCloud Alibaba?
Spring Cloud Alibaba 是阿里巴巴提供的微服務(wù)開發(fā)一站式解決方案,是阿里巴巴開源中間件與 Spring Cloud 體系的融合。
Spring Cloud Alibaba 是新一代微服務(wù)解決方案,它在Spring Cloud 的基礎(chǔ)上進(jìn)行了升級(jí)
Spring Cloud Alibaba 吸收了 Spring Cloud Netflix 的核心架構(gòu)思想,并進(jìn)行了高性能改進(jìn)。自 Spring Cloud Netflix 進(jìn)入停更維護(hù)后,Spring Cloud Alibaba 逐漸代替它成為主流的微服務(wù)框架。
四、安裝 Nacos 并啟動(dòng)
?安裝Nacos
Nacos是阿里巴巴的產(chǎn)品,現(xiàn)在是SpringCloud中的一個(gè)組件。相比Eureka功能更加豐富,在國內(nèi)受歡迎程度較高。
下載nacos
nacosGitHub下載地址
下載ZIP文件完成后,我們解壓ZIP壓縮包,這里我用的是 1.4.1,我把這個(gè)放到百度網(wǎng)盤了,需要自取 nacos安裝包 鏈接自帶密碼,無需輸入
解壓文件
Nacos的默認(rèn)端口是8848,如果你的電腦已經(jīng)占用了8848,可以根據(jù)以下方式修改端口號(hào)
修改端口號(hào)
進(jìn)入 conf 配置文件夾打開 application.properties
文件
配置端口號(hào)
??啟動(dòng)Nacos
退回到nacos文件夾,進(jìn)入 bin文件夾,單擊上方文件地址,輸入 cmd
進(jìn)入DOS窗口啟動(dòng)
輸入
startup.cmd -m standalone
命令啟動(dòng)
啟動(dòng)成功,輸入網(wǎng)址測試
成功訪問
五、Nacos 實(shí)戰(zhàn)之 服務(wù)注冊(cè)
需求明細(xì):
-
采用Maven 聚合工程搭建微服務(wù)架構(gòu),新建2個(gè)微服務(wù),一個(gè)為訂單服務(wù),一個(gè)為用戶服務(wù)
-
創(chuàng)建兩張數(shù)據(jù)表,一個(gè)為訂單表,一個(gè)為用戶表
-
引入Maven 依賴,Spring Cloud Alibaba 相關(guān)依賴,將服務(wù)注冊(cè)至Nacos注冊(cè)中心
-
訂單服務(wù)可根據(jù)訂單號(hào)查詢出關(guān)聯(lián)的用戶,這里需要
遠(yuǎn)程調(diào)用
,使用 Spring Cloud Alibaba 的 FeignClient功能 -
公共模塊管理相關(guān)依賴,子模塊引入具體所需依賴即可
所需數(shù)據(jù)表
tb_user
CREATE TABLE `tb_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(100) DEFAULT NULL COMMENT '收件人',
`address` varchar(255) DEFAULT NULL COMMENT '地址',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `username` (`username`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT
tb_order
CREATE TABLE `tb_order` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '訂單id',
`user_id` bigint(20) NOT NULL COMMENT '用戶id',
`name` varchar(100) DEFAULT NULL COMMENT '商品名稱',
`price` bigint(20) NOT NULL COMMENT '商品價(jià)格',
`num` int(10) DEFAULT '0' COMMENT '商品數(shù)量',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE KEY `username` (`name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=109 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT
??核心依賴
項(xiàng)目結(jié)構(gòu)
目錄解釋
- nacos-demo :整體Maven工程父級(jí)工程,該工程包括了整個(gè)微服務(wù)架構(gòu),把共有依賴放入該目錄下,子級(jí)繼承即可
- nacos-user-service:nacos用戶服務(wù),內(nèi)部主要實(shí)現(xiàn)查詢用戶的接口,用于order服務(wù)調(diào)用
- nacos-order-service:nacos訂單服務(wù),內(nèi)部實(shí)現(xiàn)通過訂單號(hào)查詢相關(guān)信息,通過 FeignClient遠(yuǎn)程調(diào)用 user 服務(wù)
nacos-demo 及子級(jí)依賴
nacos-demo父級(jí)工程
<packaging>pom</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.9.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR10</spring-cloud.version>
<mysql.version>5.1.47</mysql.version>
<mybatis.version>2.1.1</mybatis.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- springCloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- mysql驅(qū)動(dòng) -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
?效果圖
??核心源碼
nacos-order-service核心代碼
UserClient
@FeignClient("userService")
public interface UserClient {
@GetMapping("/user/{id}")
User findById(@PathVariable("id") Long id);
}
OrderService
@Service
public class OrderService {
@Autowired
private OrderMapper orderMapper;
@Autowired
private UserClient userClient;
public Order queryOrderById(Long orderId) {
//1. 查詢訂單
Order order = orderMapper.findById(orderId);
//2. 查詢用戶
User user = userClient.findById(order.getUserId());
order.setUser(user);
return order;
}
}
nacos-user-service
UserService
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public User findById(Long id) {
return userMapper.findById(id);
}
}
UserController
@Slf4j
@RestController
@RequestMapping("/user/")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("{id}")
public User findById(@PathVariable("id") Long id) {
return userService.findById(id);
}
}
?服務(wù)注冊(cè)
服務(wù)注冊(cè)到nacos注冊(cè)中心,在 application.yaml
文件內(nèi)配置如下
application:
name: userService
xml已添加如下nacos依賴
<!--nacos配置管理依賴-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
??啟動(dòng)測試
啟動(dòng)后如下界面,再次查看服務(wù)列表即可
六、IDEA 調(diào)出 services 服務(wù)實(shí)例列表
在啟動(dòng)時(shí)如果沒有services 服務(wù)列表,我們需要去調(diào)出來,這樣方便我們啟動(dòng)以及調(diào)試項(xiàng)目
View —> Tool Windows —> Services
如果沒有服務(wù)列表的話,那么我們要添加服務(wù),SpringBoot
添加Spring Boot 服務(wù)
選擇類型
添加服務(wù)
添加成功,如下界面
?小結(jié)
以上就是【Bug 終結(jié)者】對(duì) 【云原生】SpringCloud Alibaba 之 Nacos注冊(cè)中心實(shí)戰(zhàn) 的簡單介紹,Spring Cloud Alibaba 是目前比較火的微服務(wù)中間件,很強(qiáng)大,必須吃透!文章來源:http://www.zghlxwxcb.cn/news/detail-437048.html
如果這篇【文章】有幫助到你,希望可以給【Bug 終結(jié)者】點(diǎn)個(gè)贊??,創(chuàng)作不易,如果有對(duì)【后端技術(shù)】、【前端領(lǐng)域】感興趣的小可愛,也歡迎關(guān)注?????? 【Bug 終結(jié)者】??????,我將會(huì)給你帶來巨大的【收獲與驚喜】??????!文章來源地址http://www.zghlxwxcb.cn/news/detail-437048.html
到了這里,關(guān)于【云原生】SpringCloud Alibaba 之 Nacos注冊(cè)中心實(shí)戰(zhàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!