首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

微服务-Python实现

An approach to designing software as a suite of small services, each running in its own process and communicating with lightweight mechanisms. 这是Martin Fowler在他的论文中对微服务的定义。微服务就是一些协同工作,小而自治的服务。与微服务相对的是Monolithic(大一统)架构,将各个业务模块构建到一起,部署在同一个service中,当服务器的负载过大时,进行扩展,通常需要新的服务器,将整个应用部署上去,但这带了新的问题,负载过大时因为部分机能引起的,部署整个应用会带来性能的浪费;当某个模块需要更新时,需要打包整个应用,花费大量的时间进行部署,系统的不可用时间过长。而微服务就可以很好的回避这些问题,下图充分展示了微服务和整合系统的区别。

当然,微服务也不是银弹。采用微服务需要解决一下问题:

微服务架构可能带来过多的操作,可能需要双倍的努力。

分布式系统可能复杂难以管理。

因为分布部署跟踪问题难。

当服务数量增加,管理复杂性增加。

那么,为什么自2014年以来,微服务变得流行起来?因为一下工具解决了微服务的问题:

Docker等虚拟化工具,为微服务的部署提供了便利的条件。

Kubernetes等编排工具,为微服务的编排提供了快捷的方式,降低了部署管理的难度。

服务的易变性,实施性给微服务提供了生存空间,DevOps的发展,促进了微服务的价值。

微服务的架构过程中要实现,微服务注册与微服务发现,以及使用API网关工具来自动进行服务的负载均衡。目前,在微服务的建构方面,基于Java的Framework非常多,也相对比较完善,如Spring Boot、Spring Cloud等。Python相关的微服务框架非常少,用的比较多的是Nameko。Nameko让实现微服务变得更简单,同时也提供了很丰富的功能,比如支持负载均衡、服务发现还支持依赖自动注入等,使用起来很方便,但是有限速、超时和权限机制不完善等缺点。目前,基于Python通常会用采用 RabbitMQ 和 Nameko 来实现微服务。

环境配置

配置基于Python的微服环境,需要安装Nameko和RabbitMQ。Nameko的安装可以采用pip进行,命令如下:

pip install nameko

nameko安装完成后,需要安装RabbitMQ。在不同的系统上安装方式不同,如:

Mac上安装可以使用Brew,命令如下:

brew install rabbitmq

在Ubuntu上可以使用apt-get进行安装:

apt-get install rabbitmq-server

Windows平台,可以直接下载安装文件进行安装。更多平台的安装,请参考RabbitMQ的安装手册:https://www.rabbitmq.com/download.html。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181015G0AHPE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券