微服务架构系列:容器设计原则

 首席架构师 2020-02-11 23:31



微服务提供了巨大的好处,但也带来了巨大的新挑战。在创建基于微服务的应用程序时,微服务体系结构模式是最基本的支柱。

在本指南的前面,您学习了关于容器和Docker的基本概念。这是开始使用容器所需的最低信息。尽管,即使容器是微服务的推动者,并且非常适合微服务,但是它们对于微服务体系结构来说并不是必需的,并且本体系结构部分中的许多体系结构概念也可以在没有容器的情况下应用。但是,由于已经介绍了容器的重要性,本指南主要关注两者的交集。

企业应用程序可能很复杂,通常由多个服务组成,而不是单个基于服务的应用程序。对于这些情况,您需要了解附加的体系结构方法,例如微服务和某些域驱动设计(DDD)模式,以及容器编制概念。注意,本章不仅描述容器上的微服务,而且还描述任何容器化的应用程序。

容器的设计原则

在容器模型中,容器映像实例表示单个进程。通过将容器映像定义为流程边界,您可以创建可用于扩展流程或对其进行批处理的原语。

当您设计一个容器映像时,您将在Dockerfile中看到一个入口点定义。这定义了生命周期控制容器生命周期的进程。当流程完成时,容器生命周期结束。容器可以表示长时间运行的流程,比如web服务器,也可以表示短时间运行的流程,比如批处理作业,这些作业以前可能是作为Azure WebJobs实现的。

如果流程失败,容器将结束,协调器将接管。如果协调器被配置为保持五个实例运行而其中一个失败,协调器将创建另一个容器实例来替换失败的流程。在批处理作业中,使用参数启动流程。当流程完成时,工作就完成了。这个指导稍后会逐步深入到协调器上。

您可能会发现希望多个进程在一个容器中运行的场景。对于该场景,因为每个容器只能有一个入口点,所以可以在容器中运行脚本,根据需要启动任意多的程序。例如,您可以使用Supervisor或类似的工具在一个容器中启动多个进程。然而,即使您可以找到每个容器包含多个进程的体系结构,这种方法也不是很常见。

©著作权归作者所有:来自51CTO博客作者mob604756f59f47的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 「企业微服务架构」怎么弥合不同微服务团队之间的差距
  2. 【完整版53章,附源码+电子书】Go+Python双语言混合开发-盯紧技术
  3. 你还在手撕微服务?快试试 go-zero 的微服务自动生成
  4. 容器 - 数据存储(7)
  5. Docker、Containerd、RunC...:你应该知道的所
  6. 2018年5大微服务发展趋势
  7. 金融企业容器云平台架构设计需要清楚的8个问题
  8. VMware推出VMware Kubernetes Engine:市场威胁下的防卫举措?
  9. 胡忠想|微博微服务架构的Service Mesh实践之路

随机推荐

  1. Html5 Canvas+Javascript实现一个简单画
  2. 在同一个类中添加值并返回总和
  3. AngularJS使用双向数据绑定将img元素标签
  4. HTML5 标签audio添加网页背景音乐代码
  5. 当html从本地文件系统运行时,如何获取的内
  6. HTML5实现简单留言板1
  7. 如果操作已发生,则增加变量
  8. 关于读取HTML文件内容乱码
  9. Linux hostname主机名配置文件/etc/hosts
  10. HTML基础要点归纳