使用 Silky 构建 .NET 微服务

Silky微服务框架

Silky框架旨在帮助开发者在.net平台下,通过简单的代码和配置快速构建一个微服务应用的开发框架。它提供了RPC通信与微服务治理的关键能力。这意味着,使用silky开发的微服务,将具备相互之间的远程发现与通信能力,同时利用丝滑提供的丰富的服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。同时丝滑是高度可扩展的,用户几乎可以在任何功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。.

项目优势

开箱即用

  • • 简单易用,使用通用主机或web主机来构建(托管)微服务应用。 易用性高,面向接口代理特性能实现本地透明调用。

  • • 功能丰富,基于原有库或轻量扩展即可实现大部分的微服务治理能力。

超大规模微服务集群实践

  • • 高性能的跨进程通信协议,使用DotNetty通信框架实现了基于接口代理的RPC框架,提供高性能的基于代理的远程调用能力,以服务接口为粒度,为开发者照亮远程调用底层细节。

  • • 地址发现、流量治理层面,轻松支持规模化集群实例。

企业级微服务治理能力

  • • 通过Polly实现的服务治理,提高服务的容错能力。

  • • 内置多种负载均衡策略,智能负载下游节点健康状况,显着减少调用延迟,提高系统吞吐量。

  • • 多个注册中心服务、服务实例上下线实时资源支持。

数据一致性的保证

  • • 利用TCC多项事务保证数据最终的一致性。

使用 Silky 构建 .NET 微服务
功能特性

服务引擎

  • • 负责silky主机的初始化过程

  • • 负责模块解析、依赖管理与加载

  • • 服务注册与解析

模块化/插件化设计

  • • 模块与模块之间具有依赖关系

  • • 支持插件化加载模块

  • • 支持插件化加载应用服务

RPC通信

  • • 使用Dotnetty作为底层通信组件,使用TCP作为通信协议, 采用长链接方式提高系统吞吐量

  • • 基于接口的动态代理

  • • 支持通过模板调用

  • • 支持JSON编解码方式

  • • RPC通信过程中支持缓存拦截,提高通信性能

  • • RPC调用监控

服务治理

  • • 服务自动注册和发现,服务实例上下线智能感知

  • • RPC调用失败重试

  • • 支持轮询、随机路由、哈希一致性等负载均衡路由方式, 智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。

  • • 支持HTTP限流和RPC调用限流

  • • 支持熔断保护,当发生非友好类异常n次后开启熔断保护

  • • 支持RPC调用的监视

  • • 服务降级,当RPC调用失败后调用Fabllback指定的方法达到服务容错的目的

  • • 通过配置支持禁止服务被外部访问

通过.net主机构建

  • • 使用web主机构建微服务应用

  • • 使用通用主机构建微服务应用

  • • 构建具有websocket能力的微服务应用

  • • 构建网关应用

安全设计

  • • 网关统一进行身份认证与鉴权

  • • rpc token用于保护RPC通信,保证外部无法直接访问rpc服务

  • • RPC通信支持ssl加密

多种配置方式

  • • 支持Json格式配置文件

  • • 支持Yaml格式配置文件

  • • 支持Apollo作为配置服务中心

  • • 使用环境变量

链路跟踪

  • • HTTP请求

  • • RPC调用

  • • TCC分布式事务

  • • 其他(EFCore)...

支持分布式事务

  • • RPC通信过程中,通过TCC分布式框架保证数据最终一致性

  • • 使用拦截器+TODO日志实现

  • • 使用 Redis作为TODO日志存储仓库

支持websocket通信

  • • 通过websocketsharp.core组件构建websocket服务

  • • 透过网关代理与前端进行握手、会话

项目地址

https://github.com/liuhll/silky