时至今日,微服务已经遍地开花,属于成熟的技术。一个基本合格的微服务应该是这样的:
网关
如果每个服务是业务担当的话,那么网关则是名副其实的技术担当。作为网关,它承担了诸多重任:
拒载, 当一些恶意用户或者不符合访问要求的客户端访问的时候,此时网关则对它们进行拒载
限流, 如果把互联网比作信息高速的话,当服务出现了临时故障,无法满足更多的请求,那么网关则对来访者进行限流
熔断, 当访问出现故障的时候可以立即停止响应,以免造成更大面积的损伤。
聚合, 将后端多个API合并成一个对外提供服务
认证
来者必须亮明身份,否则不提供服务
外部用户, 谨慎又谨慎的对待一切外部来访者,万一它是个坏人
内部用户, 内部用户的特点,除了在内部网络访问服务之外,也需要从互联网进行访问
服务注册与发现
微服务的特性就是将服务按照业务边界进行拆分,一个完整的商业会涉及到很多很多的服务,那么使用手动的方式进行管理就不现实,那么每个成熟的服务就需要自己照顾自己了。自觉到服务注册中心登记,自己叫什么名字,在什么地方,提供什么服务,现在的状态怎么样。这样其他需要的客户端服务就可以拿着号码牌自己联系了。
服务间通讯
服务之间必须使用相同的协议进行通讯,通讯的策略分为实时通讯和异步通讯,实时通讯即调用立即响应,常用的方式为Web Api
和RPC
两种方式,其中WebApi
更适合服务跟终端进行通讯,基础协议为HTTP
, 数据格式使用JSON,MSGPACK,通常会根据网络条件进行选择通讯成本低的。在各内部服务间通讯,则推荐使用RPC
协议,当前gRPC
成为了事实标准。
监控运维
似乎微服务就意味着服务多,那么多的服务,没准谁就会遇到个意外,那么有一个监控告警平台是必要的。少了它,等着用户来报告服务挂了,即便内部都是哥们跟你好声好气的说,但是到了客户那里就是不给你付费了。
监控运维包含多项内容
- 日志,所有的行为都要留下踪迹,为了更好的发现问题的原点
- 状态监控,出现异常情况可以立即响应
- 调用链跟踪,也是为了发现问题的原点在什么地方