微服务核心

1.服务发现,调用方如何发现服务(调用服务出现变动,能找到他)

2.负载均衡,如何调用服务(多个服务实例,如何优先调用)

分布式的解决方法

1.集中式代理---Nginx        2.客户端嵌入--Consul           3.网格服务-Service Mesh

集中式代理---Nginx

描述:Nginx自身可以实现负载均衡,但需要通过手动添加服务配置,且调度策略归Nginx

配置步骤:

1.nginx.conf里 server----listen

2. location / { proxy_pass http://Microservice; }

3.upstream Microservice{ server localhost:5726; server localhost:5727; server localhost:5728; }

4.start nginx.exe

备注:端口号跟webapi里的端口号一致

客户端嵌入--Consul

描述:Consul可以实现服务的自动注册与发现,也可以实现健康检查,但是自身不可以实现负载均衡

Consul实现过程:客户端---Consul---发现服务实例----定期健康检查---返回给Consul

Consul实现微服务的步骤:

        1.负载均衡(客户端自己决定)

        2.服务注册与发现

        3.健康检查

Consul优点:
功能强大,自动发现-自动下线
Consul缺点:
客户端集成复杂(负载均衡在客户端实现),客户端决定调度策略

Consul实现步骤:
A.服务实例注册
B.客户端从Consul里发现服务实例
C.客户端调用服务实例

Consul.exe命令行启动
consul.exe agent -dev
访问地址:http://localhost:8500/ui/dc1/services

服务启动时注册,且注册一次

WebApi向Consul里注册
在Nuget里添加Consul
1.在startup里注册服务实例
2.在客户端拿到url
3.通过URL找到实例

4.服务挂了,影响业务,心跳检查

Consul跟Nginx对比
1.Consul不用手动添加服务实例,有健康检查,可以调用根据url调用实例,但是得客户端实现负载均衡
2.Nginx本身可以实现负载均衡,但是得手动添加服务实例

网格服务-Service Mesh

描述:
每台电脑 里面都有一个Sidercar ,负责调度策略,负载均衡,健康检查

实现:
主机+代理

优点:

独立性,自己玩自己的,不受别人的影响

缺点:
复杂度上升,每台电脑得安装

 

posted on 2020-05-21 11:36  Sun223  阅读(191)  评论(0编辑  收藏  举报