创建一个简单的微服务之一(微服务组件介绍)
微服务
微服务架构非常适合并发量大或者是业务复杂的场景,微服务的核心是高内聚、低耦合。将独立的大项目拆分成一个一个的服务,每个服务可以独立的开发、测试、构建、部署。微服务最大的好处是降低单个系统复杂性。为了能够顺利的进行微服务开发设计,首先需要了解明确微服务的组件与开发规范。
开发规范
根据云原生的特点,微服务架构的核心就是拆分功能服务。
但是不同的服务是由不同的开发团队负责,如果大家都按照自己的开发方式就会导致服务之间难以协同,微服务对开发成员之间的配合是有要求的,因此需要共同遵守同一个规范,本博客系列主要介绍以
Python
编程语言作为开发主语言,并介绍相关规范,各个厂商都有自己编码规范,大家可以作为参考。PEP8
是 Python
官方给定的标准编码规范,要求非常严格。但在团队正常开发中,如果所有人都严格的完全遵守
PEP8
,对代码各种吹毛求疵,反而效率会变低。一般大家都会对在代码规范和开发效率中寻找平衡。这里推荐一份giteepython编码规范给大家。
接口规范
除了编码规范以外,其实还有很多规范。微服务对外提供数据通常是以 API的方式提供,由于微服务之间以及微服务对外都有很多的数据交互,因此需要定义接口开发规范。接口开发的设计规范有很多,因为很多应用场景中服务需要通过网络对外提供服务,为了提高和网络的通用性,一般常用的 HTTP 接口设计 适合一般的架构。微服务通常都采用 RESTful API 架构设计,笔者相关微服务的应用中也会是完全遵循RESTful API架构设计思想和开发规范。数据传输采用Json的方法,当然也可以采用常见的数据传输格式有 XML、YAML或者是自定义数据格式。
Flask框架
本项目采用的核心框架是 Flask。Flask是Python的 Web开发框架,相比其他的框架如 Django具有轻量、快速、解耦合、无限制等优势。除了核心框架以外, Flask 还提供了相当庞大的组件库供你选择,本项目用到的重要组件有以下几个:Flask-RESTPlus 组件]、Flask-SQLAlchemy 组件、Flask-Script 组件、Flask-Migrate 组件。其中 Flask-RESTPlus`组件是我们重点研究学习的组件,因为可以对微服务传输的RestAPI信息进行解析。除了上述几个主要的组件之外,还有很多辅助组件和依赖主键,这些组件可通过 Flask 官网、Flask GitHub 、PyPi 等网站自行查阅。
Flask 微服务框架
根据Flask和Flask-RESTPlus我们就可以开发微服务了。但是Flask由于是很灵活的微内核框架,每个项目的目录结构、目录层级、代码编排、依赖关系、架构设计等都是千差万别的。
那么有没有一款类似Django或者是Vue的脚手架工具,一键生成我们需要的目录结构呢?很遗憾,到目前从市面上还没有找到。
虽然还没有类似的轮子,但是我们可以自己造啊。经过长时间实际项目开发和经验积累,逐渐摸索出一套架构设计精巧、目录层次合理的框架,Flask 微服务框架(Flask microservices frame)简称FMSF。
FMSF几乎涵盖了在开发过程中能遇到的所有问题,为了对FMSF能有清晰的认识,下列列出几项有关FMSF亮点:
- 有着清晰的目录结构、目录层级、代码编排、依赖关系、架构设计等。
- 具有四套环境(开发环境、测试环境、生成环境、单元测试),项目配置可通过环境变量进行自动配置,无需改动任何代码。
- 扩展能力强,不受限于Flask的约束,可定制扩展项。
- 开发速度快,将复杂繁琐的RESTful协议封装在底层,工程师无需了解底层的每个细节,只需要关注具体业务服务即可。
- 详细的文档教程、代码详解、测试用例、设计思想和生命周期流程图。
代码路径及其含义:
1 | microservice-model |