微服务框架——Nacos安装和背景介绍

微服务框架——Nacos安装和背景介绍

背景介绍

Spring 是基于bean mybatis :SqlSessionFactory xml @Bean

SpringBoot 基于Application 自动配置 @Autowired 自动配置

Spring Cloud 基于Service 微服务框框架共性功能 集成

netfix、alibaba、huawei 都有微服务框架

思考一:微服务之前调用用到哪些技术?

微服务和微服务之前调用存在什么问题,需要用到什么技术?

1、RPC调用(feign、dubbo) RestTemplate webClient 可以进行服务间调用

2、服务注册和发现(nacos、 eureka)、配置统一管理(zookeeper、nacos、redis)、

3、服务链路的排除、微服务的监控

4、服务熔断降级限流:hystrix、sentinel

思考二: 假如没有SpringCloud技术栈,该怎么进行微服务调用?

服务间调用 RestTemplate webclient

//RestTemplate 调用 
String url = "http://mall-order/order/findOrderByUserId/"+id; R result = restTemplate.getForObject(url,R.class);
Spring提供的RestTemplate模板类存在哪些问题?

问题1:首先不能进行负载均衡能力,客户端负载均衡。没有负载均衡

问题2:客户端感知provider的节点存活性,节点是否可用。没有心跳机制

问题3:节点出问题后,怎么剔除这个节点。没有剔除掉线or问题节点的能力

场景介绍:

电商场景下,会员服务去调用订单服务。中心是一个类似注册中心,具有保活、注册、注销,其实就是Nacos功能。

左下角是会员服务,可以看到,使用了两个TimeTask定时任务,一个定时任务定时负责发送心跳供注册中心知道自己还存活,另一个定时任务负责 定时拉取订单服务列表,缓存到客户端中,当会员服务需要去调用服务时候,就立即远程调用订单服务。

右下角是订单服务,订单服务启动时会调用注册接口和停止时候调用注销接口,定时任务负责进行心跳注册,定时确保自己保活。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H7BCEej5-1644204650653)(G:\技术积累\微服务 Nacos\微服务框架.assets\clipboard.png)]

Nacos注册instance是什么存储?

临时节点存在内存,持久化节点持久化到磁盘文件 data/naming/id,下图展示的我本机存储的instance实例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eQpWDK1U-1644204650656)(G:\技术积累\微服务 Nacos\微服务框架.assets\image-20220127122104561.png)]

nacos :拉取 持久实例和临时实例一次性全部拉取

配置数据是什么存储?

derby、mysql

1. 什么是 Nacos

官方文档: https://nacos.io/zh-cn/docs/what-is-nacos.html

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理

Nacos 的关键特性包括:

  • 服务发现和服务健康监测

  • 动态配置服务

  • 动态 DNS 服务

  • 服务及其元数据管理

主流的注册中心

CAP : Consistency 一致性、Availability 可用性、Partition tolerance分区容错性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sh1g02MX-1644204650657)(G:\技术积累\微服务 Nacos\微服务框架.assets\clipboard-1644203597166.png)]

1.1 Nacos 架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QvmNgGz2-1644204650658)(G:\技术积累\微服务 Nacos\微服务框架.assets\a97899f52bb.jpeg)]

NamingService: 命名服务,注册中心核心接口

ConfigService:配置服务,配置中心核心接口

OpenAPI文档:https://nacos.io/zh-cn/docs/open-api.html

nacos版本: v1.1.4 升级到v1.4.1

1.2 Nacos Server部署

下载源码编译

源码下载地址:https://github.com/alibaba/nacos/ 可以用迅雷下载

cd nacos/ mvn -Prelease-nacos clean install -U cd nacos/distribution/target/

下载安装包

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

1.2.1 单机模式

官方文档: https://nacos.io/zh-cn/docs/deployment.html

解压,进入nacos目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-znvFwzaO-1644204650659)(G:\技术积累\微服务 Nacos\微服务框架.assets\1143ef6048d.jpeg)]

单机启动nacos,执行命令

bin/startup.sh -m standalone

也可以修改默认启动方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BjRBdLec-1644204650659)(G:\技术积累\微服务 Nacos\微服务框架.assets\clipboard-1644203716433.png)]

如果是windows,需要修改startup.cmd 的配置文件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2MHsdlUb-1644204650660)(G:\技术积累\微服务 Nacos\微服务框架.assets\image-20220207111855260.png)]

访问nocas的管理端:http://192.168.3.14:8848/nacos ,默认的用户名密码是 nocas/nocas

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NTfAhj9b-1644204650661)(G:\技术积累\微服务 Nacos\微服务框架.assets\675d04e780c.jpeg)]

1.2.2 集群模式

官网文档: https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html

集群部署架构图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vbmg89Ct-1644204650662)(G:\技术积累\微服务 Nacos\微服务框架.assets\2ae3e866f92.jpeg)]

1)单机搭建伪集群,复制nacos安装包,修改为nacos8849,nacos8850,nacos8851

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TfVMOYog-1644204650663)(G:\技术积累\微服务 Nacos\微服务框架.assets\f5a52198166.jpeg)]

2)以nacos8849为例,进入nacos8849目录

2.1)修改conf\application.properties的配置,使用外置数据源

#使用外置mysql数据源  
spring.datasource.platform=mysql  

### Count of DB: 
db.num=1 

### Connect URL of DB: 
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC 
db.user.0=root 
db.password.0=root

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wdwcWE9S-1644204650663)(G:\技术积累\微服务 Nacos\微服务框架.assets\clipboard-1644204021302.png)]

2.2)将conf\cluster.conf.example改为cluster.conf,添加节点配置

# ip:port  
192.168.3.14:8849  
192.168.3.14:8850  
192.168.3.14:8851

nacos8850,nacos8851 按同样的方式配置。

3)创建mysql数据库,sql文件位置:conf\nacos-mysql.sql

  1. 修改启动脚本(bin\startup.sh)的jvm参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ep2gm3AF-1644204650664)(G:\技术积累\微服务 Nacos\微服务框架.assets\de18fac46e1.jpeg)]

  1. 分别启动nacos8849,nacos8850,nacos8851

以nacos8849为例,进入nacos8849目录,启动nacos

bin/startup.sh

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1F8ZhDsO-1644204650665)(G:\技术积累\微服务 Nacos\微服务框架.assets\2c4d3099c6e.jpeg)]

  1. 测试

登录 http://192.168.3.14:8849/nacos ,用户名和密码都是nacos

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zl5yB73K-1644204650666)(G:\技术积累\微服务 Nacos\微服务框架.assets\428f6a884f8.jpeg)]

7)官方推荐,nginx反向代理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uZkl4ie5-1644204650666)(G:\技术积累\微服务 Nacos\微服务框架.assets\4b9dccc1961.jpeg)]

访问: http://192.168.3.14:8847/nacos

服务实例内部注册表

Map(namespace, Map(group::serviceName, Service))
namespace 隔离的作用
group::serviceName: 隔离作用  group 所有服务同用一个group(通常用于配置中心,起到环境隔离的作用)
Service #就是微服务 mall-order  mall-user

Map<String, Cluster> clusterMap #集群 BJ  SH 互通 性能:尽可能同一集群(ribbon 负载均衡算法: 优先使用同一集群的)

@JsonIgnore
private Set<Instance> presistentInstance = new HashSet<>(); #持久实例
@JsonIgnore
private Set<Instance> ephemeralInstance = new HashSet<>(); #临时实例

Instance: 8020 8021 mall-order

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lfbQd16D-1644204650667)(G:\技术积累\微服务 Nacos\微服务框架.assets\51b1379d727.jpeg)]

问题: nacos怎么实现自动注册?

一旦有注册请求,就去调用 onApplicationEvent 事件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FT2Mlfzu-1644204650667)(G:\技术积累\微服务 Nacos\微服务框架.assets\image-20220127141022727.png)]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值