Skip to content
Micro service frame
Go Makefile Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
client
conf plugin only one conf Sep 4, 2017
config plugin only one conf Sep 4, 2017
docs
external add Makefile for external plugins Sep 5, 2017
internal mkinternal.py remove exclude Jun 11, 2018
motherboard plugin only one conf Sep 4, 2017
pluginer init microframe project Aug 18, 2017
service
.gitignore add a .gitignore Aug 18, 2017
LICENSE Initial commit Aug 18, 2017
Makefile add Makefile for external plugins Sep 5, 2017
microframe.go plugin only one conf Sep 4, 2017
readme.md fix MicroFrame.png Sep 4, 2017

readme.md

MicroFrame

MicroFrame是基于go-micro结合go的plugin(需要go1.8或以上)开发的一个微服务框架。

go-micro本身已经做了非常好的抽象和插件化。MicroFrame没有直接采用go-micro,而是在它的基础上重新开发有下面一些原因。

  1. 对纯粹的业务开发屏蔽掉掉所有服务本身的代码(当时也有考虑过使用生成代码)
  2. go-micro使用命令行参数设置启动状态,MicroFrame则依据配置文件
  3. 统一微服务节点结构
  4. 统计提供日志收集,状态监控,PV统计,性能统计,请求跟踪调试的服务。
  5. 所有节点可以通过配置,直接使用以上这些公共服务

微服务架构设计

MicroFrame

节点设计

  1. 每个微服务节点为一个MicroFrame框架服务实例(包括API、WEB、SRV、Worker、数据库代理、配置中心节点、日志收集节点)
  2. MicroFrame通过配置选择加载需要公共插件和业务插件,而成为不同的功能节点
  3. 对于一个新的业务功能,我们只需要为其开发相应的微服务Handle业务插件即可

MicroFrame框架运行流程

  1. 框架读取配置文件
  2. 框架根据配置文件加载插件(当内部插件与外部插件同名时,会加载外部插件)
  3. 调用已经加载插件的NewPlugin函数新建插件结构体(插件的NewPlugin调用无序)
  4. 对插件按插件本身阶段类型以及在配置文件中的位置进行排序
  5. 顺序依次调用插件的Preinit函数(wrap操作需要在这一步增加)
  6. 框架初始化自己的Service
  7. 顺序依次调用插件的Init函数(这一步注册业务Handle)
  8. 顺序依次调用插件的Start函数
  9. 逆序依次调用插件的Stop函数
  10. 逆序依次调用插件的Uninit函数

微服务技术选型示例

  • 服务发现 consul(优先考虑)
  • 服务保护 hystrix
  • 服务通信 protobuf(优先), jsonrpc(兼容)
  • 框架 microframe(基于go-micro)
  • 部署方案 kubernetes,docker swarm
  • 监控报警 influxdb, telegraf, hrafana
  • 日志收集 fluentd(ELK)
  • 配置文件格式 yaml(优先),toml
  • 日志格式 xclog
You can’t perform that action at this time.