1.1 Anno 分布式微服务开发框架
Anno 是一个分布式开发框架,专注于服务治理、监控、链路追踪。RPC可选用高性能跨语言的Thrift(推荐)、Grpc。同时支持 .net core 、.net framework、Java。
#
Anno 特色- 资源监控
- 链路追踪
- 集群接口文档
- 服务在线安装部署
- 守护进程,扩容缩容
在线演示 :http://anno.liqingxi.cn
示例项目&Dashboard :https://github.com/duyanming/Viper
#
基础组件包Package name | Description | Version | Downloads |
---|---|---|---|
Anno.Const | 配置库 | ||
Anno.Log | 日志库 | ||
Anno.Loader | 依赖注入库 | ||
Anno.CronNET | 任务调度库 | ||
Anno.EngineData | 业务处理基础库 |
#
通信组件包#
扩展组件包#
整体架构整体架构主要分为三个部分
1、注册中心:AnnoCenter
2、微服务:AnnoService(可以是多个服务例如:订单服务A、库存服务B、支付服务C、用户服务D)
3、ApiGateway:参考Viper
#
主要功能服务注册中心、服务发现、健康检查、负载均衡、限流、失败重试、链路追踪、资源监控等功能
#
注册中心(AnnoCenter)AnnoCenter 是一个服务注册中心,主要职责是 发现服务(例如订单服务A、库存服务B)、存储服务配置信息、健康检查、简单键值KV存储。
客户端定时从注册中心获取服务信息缓存到本地。即便注册中心宕机也不影响整个集群运行,因为客户端已经缓存了整个集群的服务信息。但是新加入的服务无法注册进来,需要启动注册中心才可以。
客户端(例如:ApiGateway )发送过来请求时,客户端类库从本地缓存找出能够处理此请求的服务列表(这个过程可能涉及权重等策略)选择一个去处理请求,然后返回,如果失败会有重试机制。
注册中心会定时对每个服务做健康检查,如果连接不上服务则标记此服务为亚健康状态,此时不会将此服务踢出也不会将自服务返回给客户单使用,然后开始重复做检查。如果一分钟内恢复正常则重新标记为健康状态切可以对外提供服务,否则永久踢出服务。
说明
服务注册中心(AnnoCenter) 是整个集群第一个需要运行起来的程序。
配置文件:只需要配置端口、超时时间即可。服务节点信息会在服务注册进来的时候自动写入
#
服务宿主程序,本着约定大于配置的开发原则。 服务(AnnoService)插件式开发具体参考:
Packages
Anno.Plugs.HelloWorldService
初始化配置
实现接口:
IPlugsConfigurationBootstrap
功能模块实现 继承: BaseModule
配置文件: