.NET Core微服务实践

.NETCore微服务实践
.NET Core微服务实践
文章图片
微服务架构
.NET Core微服务实践
文章图片
企业级能力复用平台
微服务—实操落地全套微服务架构组件
Microservice架构解析
Consul服务注册与发现
.NET Core微服务实践】Ocelot网关Gateway
Polly瞬态故障处理
Skywalking服务追踪
Exceptionless分布式日志
Apllo配置管理中心
IdentityServer4鉴权中心
Jenkins持续集成持续部署
Docker持续集成发布
Kubernetes容器编排
1基于Consul实现服务治理
服务注册与发现
服务注册:简单理解 , 就是有一个注册中心 , 我们的每个服务实例启动时 , 都去注册中心注册一下 , 告诉注册中心我的地址 , 端口等信息 。 同样的服务实例要删除时 , 去注册中心删除一下 , 注册中心负责维护这些服务实例的信息 。
服务发现:既然注册中心维护了各个服务实例的信息 , 那么客户端通过注册中心就很容易发现服务的变化了 。 有了服务注册与发现 , 客户端就不用再去配置各个服务实例的地址 , 改为从注册中心统一获取 。 那注册中心又是怎么保证每个地址的可用状态呢 , 假如某个实例挂了怎么办呢?原则上挂掉的实例不应该被客户端获取到 , 所以就要提到:健康检查 。
健康检查:每个服务都需要提供一个用于健康检查的接口 , 该接口不具备业务功能 。 服务注册时把这个接口的地址也告诉注册中心 , 注册中心会定时调用这个接口来检测服务是否正常 , 如果不正常 , 则将它移除 , 这样就保证了服务的可用性 。
常见注册中心有Consul、ZooKeeper、etcd、Eureka 。
Consul是一个分布式 , 高可用、支持多数据中心的服务注册、发现、健康检查和配置共享的服务软件 , 由HashiCorp公司用Go语言开发 。
.NET Core微服务实践
文章图片
与市面上其他系统比较如下:
.NET Core微服务实践
文章图片
总体而言 , Consul用Golang实现 , 因此具有天然可移植性(支持Linux、windows和MacOSX);安装包仅包含一个可执行文件 , 方便部署 , 与Docker等轻量级容器可无缝配合 。 此外 , 关于Consul的架构以及相关的角色 , 如下图所示:
.NET Core微服务实践
文章图片
以Server模式运行的ConsulAgent节点用于维护Consul集群的状态 , 官方建议每个ConsulCluster至少有3个或以上的运行在ServerMode的Agent , Client节点不限 。 Consul支持多数据中心 , 每个数据中心的ConsulCluster都会在运行于Server模式下的Agent节点中选出一个Leader节点 , 这个选举过程通过Consul实现的raft协议保证 , 多个Server节点上的Consul数据信息是强一致的 。 处于ClientMode的ConsulAgent节点比较简单 , 无状态 , 仅仅负责将请求转发给ServerAgent节点 。
2基于Ocelot实现API网关服务
.NET Core微服务实践
文章图片
豹猫(产于中南美洲的野生猫科动物 , 毛黄 , 有黑色斑纹和斑点)Ocelot是一个用.NETCore实现并且开源的API网关 , 它功能强大 , 包括了:路由、负载均衡、请求聚合、认证、鉴权、限流熔断等 , 这些功能只都只需要简单的配置即可完成 。 Ocelot天生集成对Consul支持 , 在OcelotGateway项目中Ocelot.json配置就可以开启Ocelot+Consul的组合使用 , 实现服务注册、服务发现、健康检查、负载均衡 。
3基于Polly实现API服务保护