# silky简介
silky框架旨在帮助开发者在.net平台下,通过简单代码和配置快速构建一个微服务应用的开发框架。它提供了 RPC通信 与 微服务治理 两大关键能力。这意味着,使用 silky 开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用 silky 提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。同时 silky 是高度可扩展的,用户几乎可以在任意功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。
silky微服务有着如下的优势:
开箱即用
- 简单易用,使用通用主机 (opens new window)或是web主机 (opens new window)来构建(托管)微服务应用。
- 易用性高,面向接口代理特性能实现本地透明调用。
- 功能丰富,基于原生库或轻量扩展即可实现绝大多数的微服务治理能力。
超大规模微服务集群实践
- 高性能的跨进程通信协议,使用DotNetty (opens new window)通信框架实现了基于接口代理的RPC框架,提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。
- 地址发现、流量治理层面,轻松支持规模化集群实例。
企业级微服务治理能力
- 通过Polly (opens new window)实现的服务治理,提高服务的容错能力。
- 内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量。
- 支持多种注册中心服务,服务实例上下线实时感知。
数据一致性的保证
- 使用TCC分布式事务保证数据最终一致性。
# 框架特性
# 服务引擎+模块化设计
- 负责silky主机的初始化过程
- 负责模块解析、依赖管理与加载
- 服务注册与解析
# RPC通信
- 使用Dotnetty (opens new window)作为底层通信组件,使用TCP作为通信协议, 采用长链接方式提高系统吞吐量
- 基于接口的动态代理
- 支持JSON、MessagePack、ProtoBuf编解码方式
- 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 (opens new window)组件构建websocket服务
- 透过网关代理与前端进行握手、会话
# 开源地址
- github: https://github.com/liuhll/silky (opens new window)
- gitee: https://gitee.com/liuhll2/silky (opens new window)
# 贡献
贡献的最简单的方法之一就是是参与讨论和讨论问题(issue)。你也可以通过提交的 Pull Request 代码变更作出贡献。
您也可以加入QQ群(934306776)参与silky框架的学习讨论。
快速开始 →