微服务架构开发
微服务架构的一个显著特点是:一个业务系统有很多个独立运行的服务节点。
为了让这些服务运行起来,微服务架构至少需要以下基础能力:
- 服务注册
- 服务发现
- 服务调用
- 安全访问
- 服务监控
- 链路日志
- 服务治理
- 简化开发
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所支持的一切功能(日志/监控/初始化/数据访问/身份认证/授权检查/..等等)。