落地微服务架构v2.0
网关+服务治理
将服务注册到Consul中,需要首先系统该插件。
Ocelot:网关组件,腾讯和微软都在使用。
可以使用dotnet run命令启动.NET Core项目,启动时可以在命令时传递监听的IP、端口、域名等参数。
Consul类似于Nginx
Consul:用于服务注册与发现。
Ocelot不会对服务进行健康检查,仅仅根据配置文件完成转发,Consul会对微服务进行健康检查。
网关可以完成集群和负载均衡,但是没办法做服务发现先和自动下线。
网关也可以进行集群化部署。
Consul和Ocelot都需要搭建自己的web站点提供服务,其中Consul具备配置页面查看对应状态。
Consul仅仅实现服务的发现,返回对应服务的端口地址等。
Gateway实现路由的转发,也可以配置实现资源分配策略,如轮询、权重、随机等。
在Gateway中可以使用MemoryCache实现缓存的管理,可以使用Redis。
服务治理:超时、熔断、限流、雪崩、合并请求。
Polly:用于微服务治理,雪崩效应、服务治理、熔断、降级、重试。
雪崩:在单位时间内,服务A调用服务B,服务B调用服务C,C宕机了,调用服务C的相关服务也宕机了,导致一连串的效应,解决雪崩效应的方案有限流、熔断、异步架构。
熔断:在单位时间内,异常了多少次,就指定时间内,调用服务的时候,直接返回失败。
降级:在指定特殊情况下,可以降低服务等级,甚至是关闭。
限流:单位时间内允许多少次调用。
重试:在服务调用失败的时候,指定重新去调用几次,成功就成功了,失败了几次之后就失败。
Polly的功能:重试(Retry)、熔断(Circuit-Breaker)、超时检测(Timeout)、缓存(Cache)、降级(Fallback)。
AOP:面向切面编程,Aspect Oriented Programming
希望在调用服务之前,组装Polly规则,希望这个规则可以自由组装,可以使用API+Attribute实现。
AOP可以在调用服务之前添加规则,规则要灵活拼装,可以把规则定义成各种特性,有几个规则就定义几个特性,标记特性就标识要使用这个规则,就读取被调用者标记了哪几个特性,把特性中的规则拼装起来。
如何封装?可以用中间件的形式,委托多层嵌套的方式实现。