Skip to content

GeekDot/fmsf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

微服务架构设计

极客点儿
2020-08-31

build python docs license python gitter

一、微服务

微服务架构非常适合并发量大或者是业务复杂的场景,微服务的核心是高内聚、低耦合。将独立的大项目拆分成一个一个的服务,每个服务可以独立的开发、测试、构建、部署。微服务最大的好处是降低单个系统复杂性。为了能够顺利的进行微服务开发设计,首先需要了解什么是 微服务架构

二、开发规范

在了解了微服务架构之后,我们知道了微服务架构的核心就是拆分功能服务。

但新的问题接踵而至,不同的服务是由不同的工程师开发,如果大家都按照自己的方式开发多个服务之间很难协同工作,微服务开发团队成员之间的配合度是有要求的,大家都需要共同遵守同一个规范,我们的微服务项目是使用 Python 编程语言作为开发主语言。

所以,大家都需要遵守 PEP8 编码规范PEP8Python 官方给定的标准编码规范,要求非常严格。但在团队正常开发中,如果所有人都严格的完全遵守 PEP8,对代码各种吹毛求疵,反而效率会变低。

一般来说,选用 PEP8 中核心精华的部分作为 团队编码规范 既符合编码规范的同时还能兼容效率问题。

三、接口规范

除了编码规范以外,其实还有很多规范。微服务对外提供数据通常是以 API 的方式提供,这样,我们就需要定义接口开发规范。

接口开发的设计规范有很多,一般常用的 HTTP 接口设计 适合一般的架构。微服务通常都采用 RESTful API 架构设计,本项目是完全遵循 RESTful API 架构设计思想和开发规范。

四、数据规范

接口规范确定之后,接下来就需要确定使用哪种数据传输格式。

常见的数据传输格式有 XMLYAMLJSON。其中 JSONJavaScript Object Notation),是一种基于文本,独立于语言的轻量级数据交换格式。与 XML 数据格式相比,JSON 没有附加的任何标记( XML 是通过标签标记数据,一般标记比数据还多,在网络传输过程中增加了很多额外的流量),得益于它的轻量,JSON 现在是所有 Web 应用程序开发的首先数据传输格式。

JSON 既然是一种数据传输格式,而且是基于 JavaScript 语言,所有也要遵循 JSON 数据规范

五、Flask 核心框架

本项目采用的核心框架是 FlaskFlaskPythonWeb 开发框架,相比其他的框架,如 Django 具有轻量、快速、解耦合、无限制等优势。

我们可以通过 Flask 精简教程 来快速了解 Flask 框架的基础知识、核心理念、开发流程和生命周期。

除了核心框架以外, Flask 还提供了相当庞大的组件库供你选择,本项目用到的重要组件有以下几个:Flask-RESTPlus 组件Flask-SQLAlchemy 组件Flask-Script 组件Flask-Migrate 组件。其中 Flask-RESTPlus 组件是我们重点研究学习的组件,因为它贯穿了整个项目的生命周期。

除了上述几个主要的组件之外,还有很多辅助组件和依赖主键,这些组件可通过 Flask 官网Flask GitHubPyPi 等网站自行查阅。

六、Flask 微服务框架

根据 FlaskFlask-RESTPlus 我们就可以开发微服务了。但是 Flask 由于是很灵活的微内核框架,每个项目的目录结构、目录层级、代码编排、依赖关系、架构设计等都是千差万别的。

那么有没有一款类似 Django 或者是 Vue 的脚手架工具,一键生成我们需要的目录结构呢?很遗憾,到目前从市面上还没有找到。

虽然还没有类似的轮子,但是我们可以自己造啊。经过长时间实际项目开发和经验积累,逐渐摸索出一套架构设计精巧、目录层次合理的框架,Flask 微服务框架Flask microservices frame)简称 FMSF

FMSF 几乎涵盖了在开发过程中能遇到的所有问题,为了对 FMSF 能有清晰的认识,下列列出几项有关 FMSF 亮点:

  • 有着清晰的目录结构、目录层级、代码编排、依赖关系、架构设计等。

  • 具有四套环境(开发环境、测试环境、生成环境、单元测试),项目配置可通过环境变量进行自动配置,无需改动任何代码。

  • 扩展能力强,不受限于 Flask 的约束,可定制扩展项。

  • 开发速度快,将复杂繁琐的 RESTful 协议封装在底层,工程师无需了解底层的每个细节,只需要关注具体业务服务即可。

  • 详细的文档教程、代码详解、测试用例、设计思想和生命周期流程图。

七、服务通信

之间讲过使用微服务架构是为了降低系统的复杂性。其实不然,微服务不是降低复杂性,而是将复杂性转移了,系统将绝大部分复杂性都转移到微服务之间的通信。微服务通信 是微服务架构中很重要的一环。

八、项目部署

终于,项目进行到了最后一步,部署上线。因为单个微服务只专注一件事情,典型的高内聚、低耦合,每个微服务都可以独立开发、测试、部署、维护。所以,一般 微服务部署 都是采用容器进行部署,每个微服务都运行在一个或多个容器中。

About

基于 Python-Flask 的微服务框架

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published