微服务架构开发

微服务架构的一个显著特点是:一个业务系统有很多个独立运行的服务节点。
为了让这些服务运行起来,微服务架构至少需要以下基础能力:

  • 服务注册
  • 服务发现
  • 服务调用
  • 安全访问
  • 服务监控
  • 链路日志
  • 服务治理
  • 简化开发

1,Nebula内置了专门设计的 配置服务,主要为了解决以下问题:

2, 微服务相互调用 拥有以下技术特性:

  • HTTP协议
  • JSON序列化
  • ClwonFish提供的HttpClient
  • 支持重试
  • 使用配置服务中的服务注册地址
  • 完整的链路日志
  • 透明传输用户身份凭证

3,与传统的API网关的授权检查思路完全不同,基于Nebula的微服务架构在安全访问控制方面由2部分构成:

  • 框架负责透明传输用户身份凭证到每个被调用的服务节点
  • 目标服务节点的Nebula框架会完成授权检查,并允许业务自行扩展授权检查逻辑

这种做法的好处在于,永远不可能绕过安全检查!


4,服务监控主要体现在:

  • 实时监控每个服务的运行状态
  • 实时监控每个服务的业务指标
  • 实时监控每个服务节点的进程状态
  • 各服务及中间件的可用性
  • 内置4种类别的 告警通知,可以让开发和运维人员及时了解并处理线上故障问题

5,Nebula内置完善的 日志支持,会在服务相互调用后生成完整的链路日志,可用于:


6,为了促进 性能和稳定性治理,Nebula提供大屏页面,让所有人都能一目了然的知道线上服务的运行状况是否健康稳定。


7,简化开发过程:虽然ASP.NET Core对微服务项目有着很好的支持,但它的项目模板是为单个服务而准备的,每个项目会包含2个固定类型Program,Startup, 用它们来配置服务的启动及初始化过程。实际使用过程中Startup的代码(初始化过程)会比较复杂,项目越多维护成本越高。

想像一下:如何方便维护50甚至100个项目的 Startup 代码?

为了解决这个问题,Nebula内置了这些模板代码(应用程序类型),并根据启用参数来控制是否启用,我们只需要调用 AppStartup.RunAsXXX(...) 就可以了, 它会自动拥有Nebula所支持的一切功能(日志/监控/初始化/数据访问/身份认证/授权检查/..等等)。