微服务四层架构之平台层,和你心中的平台层一样吗?
如果把每个微服务看作一栋住宅,那么平台层提供了道路、自来水、电线和电话线。
微服务平台层提供了工具、基础架构和一些高级的基本部件,以支持微服务的快速开发、运行和部署。
微服务平台层的功能微服务需要由以下基础设施提供支持
1)服务运行的部署目标,包括基础设施的基本元件,如负载均衡器和虚拟机。
2)日志聚合和监控聚合用于观测服务运行情况。
3)一致且可重复的部署流水线,用于测试和发布新服务或者新版本。
4)支持安全运行,如网络控制、涉密信息管理和应用加固。
5)通信通道和服务发现方案,用于支持服务间交互。
一个具有鲁棒性的平台层既能够降低整体的实现成本,又能够提升整体的可稳定性,甚至能提高服务的开发速度。如果没有平台层,产品开发者就需要重复编写大量的底层的基础代码,无暇交付新的功能和业务价值。一般的开发者不需要也不应该对应用的每一层的复杂性都了然于胸。基本上,一个半独立的专业团队就可以开发出一套平台层,能够满足那些在服务层工作的团队的需求。
总结下,作者文中的比喻很形象,特意拿到文章开头,思考下什么是平台。
我心目中的平台长什么样子呢?
1) 微服务在PAAS平台上运行,服务部署和调用依赖于paas平台,以POD粒度调度。paas平台以集群方式存在,对节点的管理。
2) 网络组件,整个系统的网络负载均衡器,同一节点和不同节点间微服务POD通信。
3) 存储组件,所有微服务POD持久化PVC。
4) 服务注册中心,用于服务注册和服务发现以及请求转发。
5) 系统的监控能力,决定系统的可观测性。比如节点/微服务等性能指标监控(内存/CPU/磁盘分区),操作日志(客户端和服务端),安全日志(访问系统记录),告警通知,微服务POD的调度记录
6) 高可用和容灾功能HADR,两地三中心提供服务和数据同步一致性。
7) 中间件集群,比如消息队列的Kafka /RabbitMQ/Redis集群等,数据库的Postgresql/Mysql集群等,FTP集群。
8) DNS域名解析器,服务间域名方式访问
9) 安全中心,HTTPS单双向认证,TOKEN认证等等。
10) 部署流水线,整个系统的搭建和维护,微服务的安装和升级,卸载等。还可能要支持灰度发布等。
你心目中的平台长什么样子呢?请留言。
摘取自 摩根·布鲁斯和保罗·A.佩雷拉的《微服务实战》