微服务部署策略与技术解析
1. 敏感数据与主机设置
当微服务处理特别敏感的数据和操作时,我们可能需要以不同的方式设置底层主机,甚至将主机置于单独的网络段。若将所有服务放在一个主机上,即使服务需求不同,最终可能也不得不以相同的方式处理它们。
过去,由于资源稀缺,我们在部署和主机管理方面的许多工作实践都是为了优化资源利用。过去若要新增主机,只能购买或租赁新的物理机,这不仅耗时久,还会带来长期的财务负担。有些客户每两到三年才会配置新服务器,在非规划时间获取额外机器很困难。但按需计算平台大幅降低了计算资源成本,虚拟化技术的改进也让内部托管基础设施更具灵活性。
2. 应用容器
熟悉在 IIS 后部署 .NET 应用程序或在 Servlet 容器中部署 Java 应用程序的人,对多个不同服务或应用程序位于单个应用容器中,而该容器又位于单个主机上的模型并不陌生。应用容器能带来更好的可管理性,例如支持集群以将多个实例分组、提供监控工具等。
这种设置还能减少语言运行时的开销。例如,在单个 Java Servlet 容器中运行五个 Java 服务,只需一个 JVM 的开销;而使用嵌入式容器时,在同一主机上运行五个独立的 JVM 则会有更高的开销。
然而,应用容器也有不少缺点:
- 限制技术选择 :必须采用特定的技术栈,这不仅会限制服务本身的技术选择,还会影响系统自动化和管理的选项。
- 部分容器功能价值存疑 :许多容器宣称能管理集群以支持共享内存会话状态,但在扩展服务时会带来挑战,应尽量避免。而且其提供的监控功能在微服务环境下往往不够用,很多