首页 存档 技术 查看内容

微服务实践Docker与服务发现(一)

2018-3-30 13:00 |来自: 互联网 367 0

摘要: 架构师(JiaGouX)我们都是架构师! Docker Java App Load Balanced By Nginx Or Apache HTTP, Mongo Replica Set And Hazelcast Cluster 背景 为了发挥Docker在跨多个服务器的分布式应用程序的部署(甚至是跨区域 ...

架构师(JiaGouX)
我们都是架构师!


Docker Java App Load Balanced By Nginx Or Apache HTTP, Mongo Replica Set And Hazelcast Cluster

背景

为了发挥Docker在跨多个服务器的分布式应用程序的部署(甚至是跨区域)的能力,人们不应该限制哪些服务进到哪个服务器。动态可扩展性(或自动缩放)的关键环境的要求(如生产环境)不只是适用于新的微服务架构设计。也适用于典型的单片应用程序的部署。如果这些服务绑定在特定的服务器上,那么这些程序的未来的可扩展性是很困难的。

为了能够实现服务发现,我们需要满足以下条件:

  • Service registration在服务器上保存这些正在运行服务的端口。

  • Service discovery实现发现我们在服务器保存在注册过程中的信息

我们还要实现强的服务,以满足企业级对服务发现的要求。包括以下这些问题:

  • 我们如何注销停止工作的服务?

  • 我们如何对这些”发现了的”服务实施负载均衡?

  • 如果服务在横向扩展或者缩放的过程中被删除了怎么办?

大多数典型的服务发现工具拥有某种高度可用的分布式(key/value)存储,大家可以参考阅读这篇博客http://technologyconversations.com/2015/09/08/service-discovery-zookeeper-vs-etcd-vs-consul/

这些工具的主要缺点是他们自己在容器中运行对第三方工具的依赖。为了使用Consul,打个比方。一个用户需要在程序中使用Consul 和Registrator 容器-这一定会使容器的数量增加。那么用户就需要管理这些容器。

DCHQ,从另一方面说。如果使用代理来协调服务注册和服务发现。把信息存储在底层DCHQ数据库。这意味着我们不需要附加的容器。另外,服务发现框架,允许用户自定义某些事件需要被执行的同时,利用的不只是IP和应用程序中的其他容器的主机名的信息提供了更大的灵活性。在部署的时候使用的也是环境变量的值。

这并不等于说服务发现框架使用DHCQ就能完全替代其它工具,最好的工具还是能够满足业务的需求。

在这篇blog中,我们将介绍使用Docker部署3个服务发现的程序,包括:Nginx

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部