微服务演变:微服务架构介绍
1.单体架构:自营,秒杀,超市,生鲜,支付
2.垂直拆分:自营,秒杀,超市,生鲜,支付
3.分布式:公用的部分公用(解决一致性问题)
4.微服务架构(v1.0,v2.0,v3.0):是一个用分布式服务拆分业务逻辑,完成解耦的架构模式:
微服务就是把BLL 的方法封装成一个服务,用网络调用。
网关:对服务的管理
集群:多台服务器做相同的事(一台死机了不影响服务的正常运行)
1.集群怎么调用,怎么管理,服务的发现:nginx
1.V1.0集中式代理nginx: 基于nginx的负载均衡
2.V2.0基于客服端嵌入:consul 服务注册,服务发现,动态健康检查
网关:GATEWAY
调用顺序:前端-nginx-调用集群网关,分发调用-consul server 返回调用列表-调用相应的服务
3.V3.0服务网格:service mesh
2.网关调用服务,服务之间调用
APOLLO:配置中心
e-ceptionless:分布式日志组件.c#;
logstash:分布式日志:Java
docker: 对应用程序的管理配置
kubernetes:k8s对docer的管理
Jenkins:对项目的管理,发布,测试
缓存:redis,mongoDB,redis分布式锁
rabbitMQ:分布式事务
主数据库,从数据库,备份库
4。 nginx:负载均衡:配置接口地址并设置权限:
1.客户端访问nginx;
2.nginx根据配置文件服务接口的地址和权限动态访问不同的接口地址;
缺点是:新增接口地址了要配置;
5.consul:服务发现和调用:保存清单好发现
1.客户端访问consul;
2.consul自动发现新增的IP地址接口清单和调用;并且健康检查,从清单里去掉不能用的IP接口地址
需要写代码实现自动发现接口和健康检查
consul功能:
1.注册时指定回调地址;
2.定时调用检查状态;
3.自动下线,上线。
4.数据同步
5.可以做分布式锁
consul集群测试:
1.key-value数据同步;
2.启动自动选举;
3.数据恢复等。
redis 分布式锁
缺点:
1.暴露端口: 网关解决
2.consul 死机:集群解决
负载均衡策略:
1.均衡策略
2.轮询策略
3.权重策略
4.随机策略
6.网关,搭建ocelot本地映射;
consul负载均衡
docker构建集群
7.网关集群
consul集群
服务集群
官网:https:threemammals.com/ocelot
git:https://github.com/threemammals/ocelot
8. ocelot 网关搭建:
1.添加ocelot 在程序包,
ocelot.provider.consul包:
2.修改starup.cs
3.添加转发配置文件
docker + gateway(ocelot) + consul
ocelot:功能:负载映射, 负载均衡,服务治理,不支持配置多个consul
ocelot.provider.consul: 功能:负责管理实例伸缩,健康检查,只轮询健康的接口;
docker ps -a
docker rmi -f
docker composecore up //启动服务
clear
9.微服务用到的工具:
skyqpm:全链路追踪
apolo:集中配置中心,配置文件(ocelot,nginx)
e-ceptionless:日志
logstash kibans ;日志
jenkins+git: 快速测试,快速部署,持续继承,git
docker:部署,管理镜像
kubernetes=k8s:管理docker的镜像,容器编排
consul:分布式锁:
rabbitMQ:分布式事务:
mongoDB:高并发大量数据读写
identityserver4:鉴权授权
ocelot.provider.polly:瞬态故障处理
GRPC,
ocelot gateway:作用:
1.缓存:ocelot.catch.cachemanager 包
2.服务治理;
3.负载均衡;
4.路由转发;
5.超时,重试
6.雪崩效应:
7.熔断机制:限制请求数,请求的错误率达到阈值,启动熔断如10秒(针对服务器错误,不针对代码错误)
8.限流,漏电保护器(保险丝):限流,限制单位时间内的请求数(如6秒内最多5个请求,否则等待30秒后在请求)apolo
100QPS:每秒处理100个请求
降低用户体验来提高系统的可用性
单体服务开发越来越少
分布式,微服务,云服务开发越来越多。
ocelot.provider.polly:包,瞬态故障处理
10.identityserver4:鉴权授权 网关层
session:是服务端-负载均衡了下次访问不到;
redis分布式sesiion:任何一个服务的任何异常请求都要访问redis -如何有的服务在别的局域网--session是行不通。
是asp.net core 的框架,实现了单点登录
identityserver4 3.1.3 包;
jwt.io
11.sso 单点登录
session-token(sso)--json web token
非对称可逆加密(加解密,不可推到)
公开解密Key--公钥
私藏加密Key--私钥
客户端
nginx
gateway of ocelot
nginx of consul
consul 集群;
服务实例集群;
日志,异常处理,授权
47.95.2.2:11500/ui/dc1
jwt.io
12.docker 架构--容器
client
containers
images
registry