基于Mesos、Docker、Marathon实现的可伸缩微服务思路
来源:互联网 发布:幼儿园软件有哪些 编辑:程序博客网 时间:2024/06/05 19:39
前言
今天主要和大家分享一个基于Mesos、Docker、Marathon进行微服务话改造的思路。
服务发现在整个架构中扮演了非常重要的角色。大家都知道服务发现分为客户端服务发现与服务端服务发现。而提到服务发现又不能不提到服务注册,服务注册分为自注册方式与第三方注册方式。相信很多人已经接触过dubbo,dubbox,Zeroc Ice这些rpc框架了。就以dubbo为例,dubbo就可以使用Zookeeper进行服务发现,是典型的客户端服务发现,并且采用了自注册方式进行服务注册。今天就是基于dubbo给大家提供一个思路。
主要问题
在mesos的环境中,我们每个机器会启动多个实例,并且实例有可能会在不同的机器之间漂移,并且物理端口,网络资源有限。不像使用物理机器一样,直接将应用配置与机器进行绑定,如:每个机器启动一个或多个实例,其绑定的ip,端口可以写死在配置文件中。
解决方法
使用Docker的环境变量来解决该问题,因为Marathon在启动任务时会在Docker中自动注入任务相关环境变量,如PORT0,PORT1,HOST等,而其中的PORT0,PORT1是Marathon自动分配的Service Port,不用担心不同的项目(多Docker实例在同一台物理机)会分到相同port。在实际应用中可以使用Host模式启动容器,直接拿环境变量中PORT0等属性对项目进行初始化。
Demo:我使用Docker的Host方式启动容器,并使用Marathon自动分配的Service Port进行端口绑定,之后将服务信息自注册到Zookeeper中,其他客户端就可以通过Zookeeper内容发现服务信息,并进行服务调用。
dubbo配置文件样例:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:application name="dubbo-service" /> <dubbo:registry client="zkclient" address="zookeeper://v.lipg.cn:2181" /> <!--重点在这里,我使用的springboot构建的项目,使用${PORT0}会获取系统环境变量PORT0的内容来替换,进行端口绑定--> <dubbo:protocol name="dubbo" port="${PORT0}" /> <dubbo:service interface="cn.lipg.test.dubbo.EchoApi" ref="dubboApiImpl" /></beans>
Demo
https://github.com/lipg/Dubbo-Docker-Service
- 基于Mesos、Docker、Marathon实现的可伸缩微服务思路
- 基于Mesos+Marathon+Zookeeper的Docker容器管理平台
- docker+mesos+marathon
- Mesos+ZooKeeper+Marathon+Docker
- 基于 Mesos、Marathon、Docker环境的 Jenkins 持续集成及配置管理
- 基于Mesos+Marathon+Zookeeper的Docker集群管理环境搭建过程分享
- docker on marathon&mesos示例
- 使用Mesos管理Docker集群(Mesos + Marathon + Chronos + Docker)
- Mesos&Marathon实现容器部署
- Mesos, Marathon, Docker 平台部署记录
- Mesos+Docker+Marathon环境搭建教程
- Mesos + Marathon + Deimos + Docker 容器集群组建
- centos7配置zookeeper+mesos+marathon+docker
- 使用Mesos和Marathon管理Docker集群
- Mesos+Docker+Marathon环境搭建教程
- Mesos + Marathon + Chronos + Docker环境安装
- 基于K8s和docker的Jenkins 可伸缩持续集成系统
- Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)
- navigator,JS检测浏览器插件
- 数论----高斯消元
- 数据结构——双向链表(用于DXF直线数据处理,做出测试算法)
- Zhou_Zy's OI life.
- Android 学习之Activity的启动模式
- 基于Mesos、Docker、Marathon实现的可伸缩微服务思路
- 测试工具loadrunner的中文版安装和破解
- Spark SQL 数据源 API:Spark平台的统一数据接入
- Python机器学习库
- Java 常用排序算法/程序员必须掌握的 8大排序算法
- 史上最全的iOS之UITextView实现placeHolder占位文字的N种方法
- HDU 5784- How Many Triangles-计算几何-two-pointer-数锐角三角形个数
- 静态通讯录
- 正则表达式的坑?