首页 > 其他分享 >dotnet core微服务框架Jimu介绍

dotnet core微服务框架Jimu介绍

时间:2024-10-29 22:11:59浏览次数:5  
标签:core 服务 Jimu consul dll 组件 dotnet 日志 root

jimu 是一个基于.Net6.0 简单易用的微服务框架,参考了很多开源库以及想法,使用了大量的开源库(如 DotNetty, consul.net, Flurl.Http, Json.net, Log4net, Quartz.net ... ), 支持分布式、高并发和负载均衡, 实现了服务治理(如服务注册、发现、健康检测 ...)和 RPC 调用。

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

特点

  1. 使用 Apache License 2.0 开源协议
  2. jimu 最核心的思想是 IOC 和 DI, 通过配置文件使用了 autofac 将组件注入到框架中,用组件来驱动框架,使框架更具弹性。
  3. 服务注册与发现: consul
  4. 动态网关
  5. 基于 DotNetty 的 RPC
  6. JWT 鉴权
  7. 负载均衡:轮询
  8. 容错策略: 重试
  9. 容器发布 docker
  10. 路由配置: Attribute 注解
  11. 日志记录: log4net, nlog
  12. Api 文档: swagger
  13. 链路跟踪: skywalking
  14. RESTful: Attribute 注解
  15. 健康监测
  16. 文件上存下载:多文件和单文件
  17. uri跳转: 服务端跳转指定的 url
  18. ORM: Dapper
  19. DDD: MiniDDD
  20. 缓存: Memcached
  21. 消息队列:RabbitMq

Install

  1. 启动 consul;
  2. 设置 Samples/ApiGateway, Samples/Server.Auth, Samples/Server.Order, Samples/Server.User 为启动项;
  3. 打开 http://localhost:54762/swagger/index.html

配置

服务端

日志

  1. JimuLog4netOptions: Log4net 日志组件

    复制代码
    {
        "JimuLog4netOptions":{
            "EnableConsoleLog":true,
            "EnableFileLog":true,
            "FileLogPath":"log",
            "FileLogLevel":"Debug,Info,Warn,Error",
            "ConsoleLogLevel":"Debug,Info,Warn,Error",
            "UseInService": true // ILogger 是否注入到 service
        }
    }
     
    复制代码
  2. JimuNLogOptions: NLog 组件

授权

  1. JwtAuthorizationOptions: Jwt 授权

    复制代码
    {
        "JwtAuthorizationOptions":{
             "ServiceInvokeIp": "${SERVICE_INVOKE_IP}", //服务宿主的地址
            "ServiceInvokePort": "${SERVICE_INVOKE_PORT}",
            "Protocol": "Netty", //传输协议:Http,Netty
            "SecretKey": "123456", //生成token 的钥匙
            "ValidateLifetime": true,
            "ExpireTimeSpan": "0.16:0:0", //token 有效时长: day.hour:minute:second
            "ValidateIssuer": false, //
            "ValidIssuer": "",
            "ValidateAudience": false,
            "ValidAudience": "",
            "TokenEndpointPath": "/v2/token", //获取 token 的路径
            "CheckCredentialServiceId": "Auth.IServices.IAuthService.Check(context)" //验证用户名密码是否正确的 service id, context 是 JwtAuthorizationContext,包含 UserName,Password等调用上下文信息
        }
    }
    复制代码

服务发现

  1. ConsulOptions: 使用 Consul 作为服务发现组件
复制代码
{
          "ConsulOptions":{
                "Ip": "127.0.0.1", //consul ip
                  "Port": "8500", // consul port
                  "ServiceGroups": "ctauto.test.store", //服务注册所属的组别
                  "ServiceInvokeIp": "127.0.0.1", //服务宿主的地址
                  "ServiceInvokePort": "8004 //服务宿主的端口
          }
      }
复制代码

服务调用协议

  1. TransportOptions: 服务调用的传输组件

    复制代码
    {
        "TransportOptions":{
            "Ip": "127.0.0.1", //服务宿主ip
            "Port": 8001, //服务宿主端口
            "Protocol": "Netty", //传输协议: Netty, Http
            "ServiceInvokeIp": "127.0.0.1", //服务宿主的地址
            "ServiceInvokePort": "8001"
        }
    } 
    复制代码

服务

  1. ServiceOptions: 服务配置
复制代码
{
       "ServiceOptions":{
           "Path": "",//服务dll所在路径,默认当前目录
           "LoadFilePattern": "IService.dll,Service.dll",//需要加载的服务dll,支持统配符:*.dll,*.txt
       }
   }
复制代码
ORM

数据库接入

  1. Dapper

    复制代码
    {
       "DapperOptions": {
         "ConnectionString": "server=localhost;database=grissom_dev;user=root;pwd=root;",
         "DbType": "MySql" //数据库类型,支持: MySQL,SQLServer,Oracle,SQLite, PostgreSQL
      }
    }
    复制代码
MiniDDD Repository

MiniDDD 是一个轻量级的 DDD 框架, MiniDDD Repository 就是基于该框架的数据仓储,支持以下仓储

  1. Dapper

    复制代码
    {
      "MiniDDDDapperOptions": {
        "ConnectionString": "server=localhost;database=grissom_dev;user=root;pwd=root;",
        "DbType": "MySql" //数据库类型,支持: MySQL,SQLServer,Oracle,SQLite, PostgreSQL
          // 没有 sql 日志可输出
      }
    }
    复制代码
  2. EF

    复制代码
    {
       "MiniDDDEFOptions": {
         "ConnectionString": "server=localhost;database=grissom_dev;user=root;pwd=root;",
         "DbType": "MySql", //数据库类型,支持: MySQL,SQLServer,Oracle,SQLite, PostgreSQL
         "TableModelAssemblyName": "",//EF对应的表的实体类dll, Server 项目引用了则不需要设置
         "OpenLogTrace":false, //是否开启 sql 日志,一般 debug 时开启方面查看生成的 sql
         "LogLevel":"Debug" //日志级别: Debug,Information,Warning,Error
       }
    }
    复制代码
  3. SqlSugar

    复制代码
    {
        "MiniDDDSqlSugarOptions": {
          "ConnectionString": "server=localhost;database=grissom_dev;user=root;pwd=root;",
          "DbType": "MySql", //数据库类型,支持: MySQL,SQLServer,Oracle,SQLite, PostgreSQL
          "OpenLogTrace":false, //是否开启 sql 日志,一般 debug 时开启方面查看生成的 sql,没有日志级别可选
       }
    }
    复制代码

客户端

日志

  1. JimuLog4netOptions: Log4net 日志组件

    复制代码
    {
        "JimuLog4netOptions":{
            "EnableConsoleLog":true,
            "EnableFileLog":true,
            "FileLogPath":"log",
            "FileLogLevel":"Debug,Info,Warn,Error",
            "ConsoleLogLevel":"Debug,Info,Warn,Error"
        }
    }
    复制代码
  2. JimuNLogOptions: NLog 组件

授权

  1. JwtAuthorizationOptions: Jwt 授权,支持在客户端实现 jwt 授权,服务端不需要配置
复制代码
{
    "JwtAuthorizationOptions":{
        "Protocol": "Http", //传输协议:Http,Netty
        "SecretKey": "123456", //生成token 的钥匙
        "ValidateLifetime": true,
        "ExpireTimeSpan": "0.16:1:0", //token 有效时长: day.hour:minute:second
        "ValidateIssuer": false, //
        "ValidIssuer": "",
        "ValidateAudience": false,
        "ValidAudience": ""
    }
}
复制代码

服务发现

  1. ConsulOptions: 使用 Consul 作为服务发现组件
复制代码
{
    "ConsulOptions":{
        "Ip": "127.0.0.1",//consul ip
        "Port": 8500,// consul port
        "ServiceGroups": "MyService",//服务注册所属的组别
    }
}
复制代码

服务发现刷新频率

  1. DiscoveryOptions:客户端会缓存已发现的服务,设定刷新频率

    {
        "DiscoveryOptions":{
            "UpdateJobIntervalMinute":1//单位分钟,1分钟刷新一次
        }
    }

容错机制

  1. FaultTolerantOptions:服务调用时的容错机制

    {
        "FaultTolerantOptions":{
            "RetryTimes":0 //服务调用失败重试次数
        }
    }

服务健康监测

  1. HealthCheckOptions: 根据已发现服务的ip,port 定时进行服务器心跳监测(客户端主动连接)

    {
        "HealthCheckOptions":{
            "IntervalMinute":1 //心跳监测时间间隔,单位分钟
        }
    }

负载均衡

  1. LoadBalanceOptions

    {
        "LoadBalanceOptions":{
            "LoadBalance":"Polling" //负载均衡算法: Polling - 轮询
        }
    }

远程代理

  1. ServiceProxyOptions

    {
        "ServiceProxyOptions":{
            "AssemblyNames":["IOrderServices.dll","IUserServices.dll"]//代理接口dll配置
        }
    }

客户端获取请求 token 的方式

  1. TokenGetterOptions

    {
        "TokenGetterOptions":{
            "GetFrom":"HttpHeader" //从http header 获取, Request.Headers["Authorization"]
        }
    }

服务调用

  1. TransportOptions: 服务调用的传输组件

    {
        "TransportOptions":{
            "Protocol":"Netty" //传输协议: Netty
        }
    }
 

 

2024-10-29 22:10:21【出处】:https://www.cnblogs.com/flamesky/p/18503218

=======================================================================================

标签:core,服务,Jimu,consul,dll,组件,dotnet,日志,root
From: https://www.cnblogs.com/mq0036/p/18514620

相关文章

  • 在netcore中使用Influxdb2
    Program.csusingInfluxDB.Client.Api.Domain;usingInfluxDB.Client.Writes;usingInfluxdb2.Demo.model.db;usingInfluxdb2.Demo.model.dto;namespaceInfluxdb2.Demo{internalclassProgram{staticstringurl="http://127.0.0.1:8086......
  • 在 ASP.NET Core 中使用 EF Core 进行开启事务工作单元(Unit of Work) 仓储层,服务层模式
    在ASP.NETCore中使用EntityFrameworkCore实现一个带有事务的工作单元(UnitofWork)模式的仓储层和服务层,可以确保在执行多个数据库操作时具有原子性。这样,即使某个操作出现错误,所有操作也可以回滚。以下是如何实现这个模式的详细步骤:定义实体类我们首先定义一个简单的实......
  • C#03-.NET Core学习笔记
    @目录1.关于.NET1.什么是.NET?2.什么是.NETFrameWork?3.什么是.NETCore?4.NETCore的优点2.异步编程1.C#中async、await关键字2.编写异步方法3.异步方法并不等于多线程4.为什么有的异步方法没标async5.不要用sleep6.CancellationToken7.WhenAll8.异步编程中其他问题1.接口中的异......
  • ASP.Net Core 8 Web API整合Swagger UI并进行模块分组吃屎般瞬间记录
    一、开发环境开发工具:VisualStudio2022工程模板:ASP.NetCore8WebAPI工程(官方标准的).Net环境:.NetCore8.0NuGet依赖:Swashbuckle.AspNetCore6.9.0(UI用的默认的UI界面,可以自由选择其他的UI界面)二、基本概述参考了网上很多大佬的帖子,实现基本就两种:1、用自定义At......
  • orchard core 2 的user模块,添加phonenumber手机号的liquid支持
    老外习惯用email,我们要求的是要手机号。所以除了采用二次验证(2FA),发现工作流要给用户发送通知短信无法获取对应的手机号。所以对源码进行扩展增加了liquid获取手机号。1、下载源码可以clone也可以下载2、找到对应modules的user模块直接在starup.cs找到LiquidStartup添加显......
  • 在 HarmonyOS Next 中使用 Core File Kit 管理应用文件
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的文件管理技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在应用开发中,文件的创建、读......
  • [rCore学习笔记 031] SV39多级页表的硬件机制
    看到这个题目就知道上一节提到的RISC-V手册的10.6节又有用武之地了.这里只需注意,RV32的分页方案Sv32支持4GiB的虚址空间,RV64支持多种分页方案,但我们只介绍最受欢迎的一种,Sv39。:RISC-V的分页方案以SvX的模式命名,其中X是以位为单位的虚拟地址的长度。虚拟地址和物理地址......
  • 适用于 Visual Studio 的 SDK 下载 .NetCore,NET Standard,Framework各个版本
     微软官方下载地址:https://dotnet.microsoft.com/zh-cn/download/visual-studio-sdks?cid=getdotnetsdk 以下适用于VisualStudio的.NET的各种SDK。有关更多选项,请访问下载页面。.NET/.NETCore.NET是一个免费的、跨平台的、开源开发人员平台,用于构建许多不同类型的应......
  • dotnet core微服务框架Jimu介绍
    jimu是一个基于.Net6.0简单易用的微服务框架,参考了很多开源库以及想法,使用了大量的开源库(如DotNetty,consul.net,Flurl.Http,Json.net,Log4net,Quartz.net...),支持分布式、高并发和负载均衡,实现了服务治理(如服务注册、发现、健康检测...)和RPC调用。jimu(积木),正如......
  • iis部署tms web core
    iis部署tmswebcore首先准备好你要发布的网站文件夹 1)iis设置网站2)1、打开“IIS信息服务管理器”——》选择你发布的网站——》选择功能视图中的“身份验证”——》右键匿名身份验证,选择“编辑”,选择“特定用户IUSR”;2、右键要发布的网站文件夹,选择“安全”——》“编辑......