{"id":13525352,"url":"https://github.com/q315523275/FamilyBucket","last_synced_at":"2025-04-01T04:31:49.384Z","repository":{"id":38090877,"uuid":"124056919","full_name":"q315523275/FamilyBucket","owner":"q315523275","description":"集合.net core、ocelot、consul、netty、rpc、eventbus、configserver、tracing、sqlsugar、vue-admin、基础管理平台等构建的微服务一条龙应用","archived":false,"fork":false,"pushed_at":"2022-12-08T06:37:10.000Z","size":92958,"stargazers_count":727,"open_issues_count":16,"forks_count":217,"subscribers_count":45,"default_branch":"master","last_synced_at":"2024-04-30T11:18:59.026Z","etag":null,"topics":["configserver","consul","elasticsearch","eventbus","grpc","netcore2","ocelot","rabbit-mq","sqlsugar","tracing"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/q315523275.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"License","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-03-06T09:49:10.000Z","updated_at":"2024-04-12T08:09:41.000Z","dependencies_parsed_at":"2022-07-12T17:12:02.812Z","dependency_job_id":null,"html_url":"https://github.com/q315523275/FamilyBucket","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/q315523275%2FFamilyBucket","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/q315523275%2FFamilyBucket/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/q315523275%2FFamilyBucket/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/q315523275%2FFamilyBucket/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/q315523275","download_url":"https://codeload.github.com/q315523275/FamilyBucket/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246547356,"owners_count":20794970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["configserver","consul","elasticsearch","eventbus","grpc","netcore2","ocelot","rabbit-mq","sqlsugar","tracing"],"created_at":"2024-08-01T06:01:17.934Z","updated_at":"2025-04-01T04:31:49.352Z","avatar_url":"https://github.com/q315523275.png","language":"C#","funding_links":[],"categories":["Sample Projects","C\\#","Architectural Patterns"],"sub_categories":["Microservices"],"readme":"﻿## 微服务全家桶FamilyBucket应用框架\n`FamilyBucket` 是一个集合多个组件应用形成的微服务一体化的全套应用框架。  \n\n各组件源码： https://github.com/q315523275/FamilyBucket  \nUI源码： https://github.com/q315523275/FamilyBucket-UI  \n部分服务源码： https://github.com/q315523275/FamilyBucket-Server  \n博客园地址： https://www.cnblogs.com/tianxiangzhe/p/10212337.html  \nNuget： Bucket.XXX  \n\n---\n### 特性\n* 没啥特性\n\n## 各组件矩阵\n\n|     组件             |   状态      |          说明                    |\n| :-: | :-:  | ------------------------------- |\n| [微服务网关](https://github.com/q315523275/FamilyBucket/tree/master/src/ApiGateway \"微服务网关\")  |  维护中  | 使用[ocelot](https://github.com/ThreeMammals/Ocelot \"ocelot\")服务网关，扩展配置存储方式、子服务dotnetty通信  |\n| [认证授权组件](https://github.com/q315523275/FamilyBucket/tree/master/src/Authorize \"认证授权\")  |  维护中  |  jwt无状态认证方式，动态权限控制  |\n| [缓存组件](https://github.com/q315523275/FamilyBucket/tree/master/src/Cache \"缓存组件\") | 维护中  | 多种缓存方式实现，本地缓存、redis缓存  |\n| [配置中心](https://github.com/q315523275/FamilyBucket/tree/master/src/Config \"配置中心\")  | 维护中  | 提供系统组件、业务等配置信息获取  |\n| [错误码](https://github.com/q315523275/FamilyBucket/tree/master/src/ErrorCode \"错误码\")  | 维护中  | 提供系统错误、业务错误等错误码对外的描述信息获取  |\n| [事件总线](https://github.com/q315523275/FamilyBucket/tree/master/src/EventBus \"事件总线\")  | 维护中  | 使用RabbitMQ实现，可用于分布式事务  |\n| [分布式调度任务](https://github.com/q315523275/FamilyBucket/tree/master/src/HangFire/Bucket.HangFire.Server \"分布式调度任务\")  | 使用中  | 使用Hangfire分布式调度系统  |\n| [命令监听](https://github.com/q315523275/FamilyBucket/tree/master/src/Listener \"组件监听\")  | 维护中  | 使用Redis、Zookeeper实现命令监听，用于组件命令接收，如缓存更新清除  |\n| [日志收集](https://github.com/q315523275/FamilyBucket/tree/master/src/Logging \"日志收集\")  | 维护中  | 对原生日志组件实现扩展，支持Log4Net、NLog、自定义日志\u003cbr /\u003eMQ传输(扩展告警系统)  |\n| [ORM](https://github.com/q315523275/FamilyBucket/tree/master/src/ORM \"ORM\")  | 维护中  | 基于[SqlSugar](https://github.com/sunkaixuan/SqlSugar \"SqlSugar\")实现多库读写分离、数据仓储  |\n| [RPC](https://github.com/q315523275/FamilyBucket/tree/master/src/Rpc \"RPC\")  | 升级中  | 基于DotNetty实现Rpc应用(网关通信扩展)，gRpc连接管理  |\n| [服务发现](https://github.com/q315523275/FamilyBucket/tree/master/src/ServiceDiscovery \"服务发现\")  | 维护中  | 基于Consul实现服务发现、自动注册注销，服务负载计算  |\n| [链路追踪](https://github.com/q315523275/FamilyBucket/tree/master/src/SkyAPM \"链路追踪\") | 维护中 | 请求链路追踪，由于资源关系对SkyAPM net客户端进行部分修改 |\n| [工具组件](https://github.com/q315523275/FamilyBucket/tree/master/src/Utility \"工具组件\") | 维护中 | 常用工具类、验证码、拼音、分词 |\n| [WebSocket](https://github.com/q315523275/FamilyBucket/tree/master/src/WebSocket \"WebSocket\") | 维护中 | 原生WebSocket扩展实现，易于扩展与自定义 |\n| 告警系统 |未开放| 应用异常实时告警系统，多大屏展示、多种通知方式 |\n| 应用监控 | 开发中 | 应用对应cup、内存、gc、http、并发、异常等数据监控与上报 |\n| [AspNetCode应用组件](https://github.com/q315523275/FamilyBucket/tree/master/src/AspNetCore/Bucket.AspNetCore \"AspNetCode\") |升级中|应用程序组件，用户上下文、健康检查接口、Controller基类、\u003cbr /\u003e批量注册、全局异常拦截、ip白名单访问、模型验证、\u003cbr /\u003e限速限流、熔断降级等持续开发中...|\n| [框架后台管理](https://github.com/q315523275/FamilyBucket-Server \"框架管理\")|升级中|管理框架信息，网关监控路由配置、应用监控与查询管理、\u003cbr /\u003e配置中心管理、错误码管理、链路监控与管理、日志管理、通用后台功能管理等|\n\n---\n## 各组件使用\nwebapi与控制台使用示例，源码： https://github.com/q315523275/FamilyBucket/tree/master/src/Sample\n\n```csharp\n        /// \u003csummary\u003e\n        /// 配置服务\n        /// \u003c/summary\u003e\n        public void ConfigureServices(IServiceCollection services)\n        {\n            // 添加全家桶服务\n            services.AddFamilyBucket(familyBucket =\u003e\n            {\n                // 添加AspNetCore基础服务\n                familyBucket.AddAspNetCore();\n                // 添加授权认证\n                familyBucket.AddApiJwtAuthorize().UseAuthoriser(builder =\u003e { builder.UseMySqlAuthorize(); });\n                // 添加数据ORM、数据仓储\n                familyBucket.AddSqlSugarDbContext().AddSqlSugarDbRepository();\n                // 添加错误码服务\n                familyBucket.AddErrorCodeServer();\n                // 添加配置服务\n                familyBucket.AddConfigServer();\n                // 添加事件驱动\n                familyBucket.AddEventBus(builder =\u003e { builder.UseRabbitMQ(); });\n                // 添加服务发现\n                familyBucket.AddServiceDiscovery(builder =\u003e { builder.UseConsul(); });\n                // 添加负载算法\n                familyBucket.AddLoadBalancer();\n                // 添加事件队列日志和告警信息\n                familyBucket.AddLogEventTransport();\n                // 添加链路追踪\n                familyBucket.AddBucketSkyApmCore().UseEventBusTransport();\n                // 添加缓存组件\n                familyBucket.AddCaching(build =\u003e\n                {\n                    build.UseInMemory(\"default\");\n                    build.UseStackExchangeRedis(new Caching.StackExchangeRedis.Abstractions.StackExchangeRedisOption\n                    {\n                        Configuration = \"10.10.188.136:6379,allowadmin=true\",\n                        DbProviderName = \"redis\"\n                    });\n                });\n                // 添加工具组件\n                familyBucket.AddUtil();\n                // 添加组件定时任务\n                familyBucket.AddAspNetCoreHostedService(builder =\u003e { builder.AddConfig().AddErrorCode().AddAuthorize(); });\n                // 添加组件任务订阅\n                familyBucket.AddListener(builder =\u003e { builder.UseRedis().AddAuthorize().AddConfig().AddErrorCode(); }); // builder.UseZookeeper();\n                // 添加应用批量注册\n                familyBucket.BatchRegisterService(Assembly.Load(\"Bucket.Demo.Repository\"), \"Repository\", ServiceLifetime.Scoped);\n                // 添加DotNetty_Rpc使用\n                familyBucket.AddRpcCore().UseDotNettyTransport().UseMessagePackCodec().AddClientRuntime().AddServiceProxy(); //.UseProtoBufferCodec()\n            });\n            // 添加过滤器\n            services.AddMvc(option =\u003e { option.Filters.Add(typeof(WebApiActionFilterAttribute)); }).AddJsonOptions(options =\u003e\n            {\n                options.SerializerSettings.ContractResolver = new DefaultContractResolver();\n                options.SerializerSettings.DateFormatString = \"yyyy-MM-dd HH:mm:ss.fff\";\n            }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);\n            // 添加接口文档\n            services.AddSwaggerGen(c =\u003e\n            {\n                c.SwaggerDoc(\"v1\", new Info { Title = \"微服务全家桶接口服务\", Version = \"v1\" });\n                c.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, \"Bucket.WebApi.xml\"));\n                c.CustomSchemaIds(x =\u003e x.FullName);\n                // Swagger验证部分\n                c.AddSecurityDefinition(\"Bearer\", new ApiKeyScheme { In = \"header\", Description = \"请输入带有Bearer的Token\", Name = \"Authorization\", Type = \"apiKey\" });\n                c.AddSecurityRequirement(new Dictionary\u003cstring, IEnumerable\u003cstring\u003e\u003e { { \"Bearer\", Enumerable.Empty\u003cstring\u003e() } });\n            });\n            // 添加HttpClient管理\n            services.AddHttpClient();\n            // 添加业务组件注册\n\n            // 添加事件消息\n            RegisterEventBus(services);\n            // 注册调度任务\n            RegisterScheduler(services);\n        }\n```\n\n\n---\n## 性能与稳定\n* 追求极限性能其实不应该使用微服务框架，独立应用对外提供服务最好\n* 网关ocelot虽然有很多功能，但是尽量只当作路由来用不要把过多功能放在网关应用，目前平均一个请求2ms左右延时\n* 提供一个高可用的服务涉及到很多很多，一定要预防好级联雪崩情况\n* 太多了\n\n---\n## VNext\n* 灰度发布方案\n* \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fq315523275%2FFamilyBucket","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fq315523275%2FFamilyBucket","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fq315523275%2FFamilyBucket/lists"}