Skip to content
Grissom edited this page Jul 17, 2018 · 6 revisions

1. What is Jimu?

1.1 简绍

Jimu(积木)是本人开发的一个基于.Net Core 2.0 简单易用的微服务框架,使用了大量的开源库, 支持分布式、高并发和负载均衡, 实现服务治理和 RPC 调用。 兼顾简单易用和高可扩展性, 项目结构扁平,代码简洁,非常适用于替换单体框架无法满足的同时又不需要上大型臃肿框架的项目。

项目在持续迭代开发中,很多功能还在排期(如可视化监控和管理工具,热更新,服务熔断、限流和降级等),如非高手,不建议上生产。

正如其中文名 - 积木,希望用她来开发项目像搭积木一样简单快速可控,使项目安全可靠稳定,整体架构可拓展、高并发、分布式。

1.2 重要概念

有两个重要概念:

  1. 微服务: 小而美的项目,实现一个比较独立的业务需求,可以独立部署和运行。
  2. 微服务框架: 框架级别的、专注于服务运行、注册、发现、调用、鉴权等等,和业务没关系。

微服务网上很多详细介绍,大家可去了解下,我的理解是它和 unix 的设计哲学很像:do one thing and do it well,专注做好一件事。随着业务需求越来越复杂,项目也会变得越来越臃肿,如果把项目拆分得足够小、足够解耦,拆分后的项目就变成了一个个独立的满足一定业务需求能被其他应用调用的小项目(如会员注册,或者会员下单),然后结合微服务框架,把这些一个个独立的单体服务整合治理和管理,提供给外部统一的调用入口,就组成了一个分布式的微服务项目。

框架的事情交给 Jimu 处理,而你只需操心怎么拆分业务、怎么实现业务需求。

2. Why Jimu

Jimu 立志于使开发微服务变得简单容易,目前已提供以下的特性

  • 服务注册
    指定服务器地址,或通过扩展支持其他应用(如 consul - 已支持,redis, zookeeper)
  • 服务发现
    指定服务器地址,或通过扩展支持其他应用(如 consul - 已支持,redis ,zookeeper)
  • 服务调用
    使用 DotNetty 或 Flurl.Http 实现 RPC 调用
  • 服务代理
    Microsoft.CodeAnalysis 解析服务接口生成动态代理
  • 健康监测
    Quartz.Net 定时调度 Socket 任务检查服务器心跳
  • 负载均衡
    轮询算法(未实现的有: 加权轮询法, 最小连接数法,随机法,加权随机法,源地址哈希法)
  • 授权认证
    jose-jwt 实现 JWT 授权
  • 系统日志
    支持 log4net、NLog 记录系统日志