微服务注册中心Nacos入门

zifeng

共 2318字,需浏览 5分钟

 ·

2021-03-11 00:34

官方文档

https://nacos.io/zh-cn/docs/what-is-nacos.html


6240509bda616e53a12ecf1fedff3641.webp

服务的提供者  &服务的消费者是相对的概念比如用户服务订单服务的消费者订单服务用户服务的提供者。但是对于订单服务---->库存服务,那么订单服务就成为服务消费者。

d5bc17e558895a66e8fa3ace0161b9a8.webp

  1. 无注册中心的调用的缺点。

比如现在我的用户服务是占用(User服务)8081端口的服务,    此时我的服务提供方(order服务端口是8080)端口我们可以通过RestTemplate  调用方式来进行调用

1  ResponseEntity<ProductInfo>responseEntity=

2    restTemplate.getForEntity(“http://localhost:8081/selectProductInfoById/+

3    orderInfo.getProductNo(),ProductInfo.class);

缺点:

1)从上面看出的缺点就是,我们的在调用的时候,请求的Ip地址和端口是硬编码的.


若此时,服务提供方(order)服务部署的机器换了端口或者是更换了部署机器的Ip,那么 我们需要修改代码重新发布部署.2)    假设我们的order服务压力过大,我们需要把order服务作为集群,那么意味着order是多节点部署,比如原来的,我们只有一台服务器,现在有多台服务器,那么作为运维人员需要在服务消费方进行手工维护一份注册表(容易出错)3)有人马上回驳我说,我可以通过ng来做负载均衡,对,我首先认为这是可行的,当时微服务成百上千的服务,难道我们要那成百上千ng么?或者使用一个Ng   那么我们能想一下哪个ng的配置文件有多么复杂。

4e155ec14f805863b366a8c2ecc6f4be.webp


1.1大话  服务注册发现原理

V1架构图

b5d4ac298d63543a6f6d7bd03f689054.webp

1.2.1) V1版本的架构,存在以下几个问题①:我们的微服务每次调用,都会去进行对数据库的查询,并发一高,数据库性能就是一个瓶颈问题.②:若我们的mysql挂了,那么我们所有的微服务调用都不能正常进行。

③:若mysql是正常的,库存微服务挂了,那么也不能正常的调用

V2版本架构图

cbcaff76bef6cce10e2bdf23bb1193ac.webp

1.3)Nacos服务端搭建

下载地址:https://github.com/alibaba/Nacos/releases

c5288b94c1be134ebc4a1574c036d3a4.webp

1.3.1)linux环境启停:







         

d0f44f6b58a7fb049ec5d02d9685bf3f.webp ①:把我们的Nacos包解压 tar -zxvf nacos-server-1.1.4.tar.gz

 





②:cd到我们的解压目录nacos      cd nacos

af72a8c7ddd75ac7e278ecf21f467564.webp

③:进入到bin目录下执行命令(启动单机)         sh startup.sh -mstandalone

13b2816b594274f17add3149f4f33f11.webp


④:检查nacos启动的端口     lsof-i:8848

7a38365c24cb4d02c6193a9e330ce19e.webp


⑤:访问nocas的服务端 http://192.168.159.8:8848/nacos/index.html 默认的用户名密码是 nocas/nocas

4574fcbeecbd16bd39f9d452be65d6b9.webp

⑥:停止nocas  在nocas/bin目录下 执行  sh shutdown.sh

78086ff803354a8b6db1901819b93b8f.webp


1.3.1)window环境下 启动nocasserver

587a3743e9f6c3bb04da907026742948.webp

2:Nacosclient服务端的搭建

①:三板斧之:第一板斧  加入依赖

1  <dependency>

2    <groupId>com.alibaba.cloud</groupId>

3    <artifactId>springcloudalibabanacosdiscovery</artifactId>

4  </dependency>

②:三板斧之:第二板斧写注解(也可以不写)   @EnableDiscoveryClient

1  @SpringBootApplication

2  @EnableDiscoveryClient

3  public class Tulingvip01MsAlibabaNacosClientOrderApplication  {

5    public static void main(String[] args){

6    SpringApplication.run(Tulingvip01MsAlibabaNacosClientOrderApplication.class,  args);

7   }

8}

③:第三板斧之:写配置文件   **注意**server-addr:不需要写协议

1  spring

2    cloud:

3    nacos:

4    discovery:

5    serveraddr:localhost:8848

6    application:

7    name:ordercenter

5ec291222e00b5765885126d1a3312e7.webp

④:验证我们的order-center注册到我们的nacos上

1  @Autowired

2  private  DiscoveryClientdiscoveryClient;

3

4  @GetMapping("/getServiceList")

5  public List<ServiceInstance> getServiceList(){

6    List<ServiceInstanceserviceInstanceList  =discoveryClient.getInstances("order‐center");

7    returnserviceInstanceList;

8}

d7a63f55cc58e00107b587e06faa43d0.webp




浏览 44
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报