永发信息网

如何在Python中使用ZeroMQ和Docker构建微服务架构

答案:1  悬赏:20  手机版
解决时间 2021-03-01 02:47
如何在Python中使用ZeroMQ和Docker构建微服务架构
最佳答案
微服务是什么?

微服务是一种架构风格,它包括多个彼此间进行通信的独立进程。在设计上,这些进程具有高度的可扩展性、相互解耦而且一次只完成一个较小的任务。这些服务都拥有自己的资源以及通过网络实现彼此间通信的进程。

相比于靠后端的 单体结构
来封装所有服务器逻辑的传统客户端-服务器架构(C/S架构)而言,微服务架构的差异性体现在关注点分离(Separation of
concern)。这种设计模式更易于维护,使得灵活性、可扩展性及容错能力更强。但是这种分布式架构所的不足之处体现在如果设计不合理就会使得排错及维
护变得复杂。

一个简单微服务的例子

让我们来分析这样的一个场景:你正在使用微服务模式构建一个电子商务网店。

对于一个电商网店上的常见商品,好比说iPhone,其详情页会显示:

。产品的及基本信息

。你的购买历史

。哪些人买了iPhone也买了手机套

。与苹果手机相关的优惠和折扣

。店家的数据

。送货方式

。推荐商品等等

此外,这个简单的产品详情页的接口将有多个版本的来匹配web、移动端以及用于第三方应用程序的REST API。

在微服务模式中数据分布在多个服务之间。在这个例子中,服务包括:

。产品详情服务

。商家服务

。支付服务

。优惠及折扣服务

。库存服务

。定价服务

。回顾服务

。推荐服务

这些独立的服务是如何被访问的呢?

解决办法是使用一个API网管,它作为所有客户端的单一入口并且根据需求调用分布在整个基础架构中的特定微服务。以上模式的行业应用案例是NetFlix API网关,它具有支持不同设备的多个API客户端。你可以点击此处 了解更多 。

构建一个简单的微服务

目前有很多方法可以用于构建你的微服务。

在本文中我们将使用ZeroMQ来创建两个进程之间的通信。ZeroMQ提供了用于在套接字之上开发可扩展、分布式systed的构建块。它使用椭圆曲线密码体制(第四版)来实现安全性,并提供了即刻开启的 通讯模式 。

关于ZMQ,还有很多 优点 。MQ即是针对异步工作而设计的线程化消息队列。谈论太多zeroMQ的内容已经超出了本文的范畴,你可以阅读 使用zeromq 以及 zeromq用于分布式系统 。

我们要使用的另一个工具是 Docker 。本文假设读者对Docker已经有了基础的了解。

ZeroMQ有很多种通讯模式,为了开始我们的工作,让我们用ZeroMQ和Flask来配置一个简单的PUB-SUB。下图展示了组件之间的关系和数据流。

1&3 - 一个flask服务器运行在5000端口上而且其URL是 /downcase/ 。该URL用来接受(GET)请求,而所有格式为的请求将收到回应:答谢字符将会转换为小写字符并返回。

2 - 回应的消息也被发送给同一个容器中的ZMQ发布者(Publisher)

4,5 - ZMQ订阅者(subscriber)持续监听并将来自ZMQ服务器的消息保存到名为 subscriber.log 的文件中

创建服务器

首先看一下我们的Dockerfile



FROM ubuntu:14.04

RUN apt-get update

RUN apt-get install -y --force-yes python python-dev python-setuptools software-properties-common gcc python-pip

RUN apt-get clean all

RUN pip install pyzmq

RUN pip install Flask

ADD zmqserver.py /tmp/zmqserver.py

Flask Port

EXPOSE 5000

Zmq Sub Server

EXPOSE 4444

CMD ["python","/tmp/zmqserver.py"]

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
盗墓笔记是什么类型的小说,好看吗,大概什么
攀峰食品有限公司在什么地方啊,我要过去处理
劳动法值夜班规定第二天是否规定休息?
大神们求防弹少年团新团综付费的那个,我站糖
有什么好办法消除考科目三心里紧张?
为什么我常忽略亲情?
南京哪家银行信用卡特惠商户多30分
厦门莲花路口去东坪山要怎么走
有高考院校代码和专业代码的书在哪买?
烤箱十大排名是那些
超艺美发沙龙在什么地方啊,我要过去处理事情
达拉特旗广电局这个地址在什么地方,我要处理
【有造句】用有..有..有..有造句
结拜兄弟的儿子叫什么
诺基亚X2里有个游戏钻石狂潮莫高窟秘密关卡3
推荐资讯
我们夫妻吵架小孩子吓到了,现在离婚了,怎么办
临沂兰山区哪边房子比较便宜
心理测验的技术指标包括量表的( )。A.难度
东江村民委员会地址有知道的么?有点事想过去
巴茅坪这个地址在什么地方,我要处理点事
根据十二五规划,到2015年全国城市污水处理率
山东潍坊技师学院放暑假是几月几号
中恒体育馆在哪里啊,我有事要去这个地方
小鱼儿与花无缺 在哪一集花无缺跳崖后小鱼儿
温声网娱网咖这个地址在什么地方,我要处理点
开个水果店生意不好怎么办,房租很高呢!每天
摩托车新电瓶和旧电瓶可以链接吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?