此项目是我在学习微服务时写的练手项目,目前是最基本的实现,后续有时间会不断更新。
## 功能模块:
-
服务注册(Consul):
服务启动自动注册,服务关闭时自动下线 注册,下线,获取服务: IServiceRegistryManage -
网关(Ocelot):
Consul集成
服务调用负载均衡
限流
熔断
认证
聚合所有微服务Swagger
与配置中心集成 -
容错(Http):
熔断
重试
超时
资源隔离
与配置中心集成(通过在appsetting中配置) -
配置中心:
使用Consul作为配置中心,可区分生产环境测试环境等 -
日志中心(ELK集成):
简单集成已实现(log4net) -
链路监控(Skywalking):
链路监控(初版) 请求会话日志聚合(未完成) -
事件总线(CAP):
RabbitMQ作为消息中间件 Mysql作为消息存储 -
Log:
Log4net: 记录物理日志
ELK: 每天记录一个index -
身份验证:
jwt方案: 认证,授权,获取用户信息 (ioc注入:IUserHelper) -
IOC,AOP:
Autofac: 默认读取当前项目下所有的class注入 (配置文件中需要配置项目名称,可通过NotAOP,NotInject设置不注入,不走切面)
AOP:
日志切面: 通过配置文件控制是否开启, 方法需要是虚方法
事务切面: 通过配置文件控制是否开启, 方法需要是虚方法,并且添加特性[UseTran] -
ORM: SqlSugar:
sql日志, 泛型仓储 -
Redis:
注入: IRedisBasketRepository -
全局异常处理:
采用Filter拦截 -
实体映射(AutoMapper):
项目下新建一个Mappers文件夹,继承Profile,在构造函数里创建映射关系即可
- 类名: 驼峰,首字母大写
case: UserService, UserHelper - 方法/属性: 驼峰,首字母大写
case: GetUser, ListUser - 字段: 驼峰,首字母小写
case: userService, userHelper - 枚举: 驼峰,首字母大写,必须以Enum结尾
case: UserStatusEnum
枚举项: 驼峰,首字母大写
case: Enable, Disable - 常量: 驼峰,首字母大写(部分常量使用下划线间隔)
case: ConsulConfigName, RedisConfigName, Claim_UserID, Claim_UserName
- 文件夹:
- 配置文件
- 配置详情
- 所有实例
- 节点详情
- 聚合swagger文档
- 仪表盘