分布式系统的解决方案,学好这个就够了

分布式、负载、消息队列等一些解决方案,在互联网公司应用已经非常普遍了,也是每一个程序员要成为技术专家、架构师必学的知识。

所以,今天给大家推荐一个开源项目,有关互联网项目常见的解决方案,通通都打包一起了。

项目简介

这是一个包含分布式锁,分布式ID,分布式消息队列、配置中心、注册中心、服务注册、超时、重试、熔断、负载均衡等解决方案的项目。

该项目把开发中,经常碰到的解决方案都归纳在一起了,大家可以根据自己项目的需求,选择相应的解决方案。

并且针对每一个解决方案,都有简单的例子,作为一个学习资料也是非常不错的,建议大家都收藏备用。

技术架构

1、跨平台:这是基于.NetCore开发的系统,可以部署在Docker,Windows,Linux,Mac;

2、基于.Net 5开发;

3、开发工具:visual studio 2022。

项目结构

图片

功能详细列表

  • 1、分布式锁

基于Redis

基于Consul

2、分布式缓存

基于Redis

3、分布式Id

基于Snowfake

4、分布式追踪 Opentracing

基于Jaeger

5、消息总线

基于MySql

基于SqlServer

基于Rabbitmq

基于Kafka

6、消息队列

消息可靠性保证

7、健康检查

Mongodb 健康检查

MySql 健康检查

SqlServer 健康检查

Redis 健康检查

Rabbitmq 健康检查

Kafka 健康检查

8、负载均衡

随机负载均衡

轮训负载均衡

9、配置中心

基于Apollo配置中心

基于Nacos配置中心

10、服务注册

基于Consul服务注册和发现

基于Nacos服务注册和发现

11、服务调用

基于HTTP弹性客户端(支持:服务发现、负载均衡、超时、重试、熔断)

基于HTTP非弹性客户端(支持:服务注册、负载均衡)

12、Canal 数据集成

输出到控制台

输出到Rabbitmq(待实现)

输出到Kafka(待实现)

使用方法

下面以分布式锁和分布缓存举例,讲解该项目使用方法;更多功能使用方法看项目的例子。

1、分布式锁

1.1、安装

可以直接引用,或者通过Nuget直接安装

Install-Package Hummingbird.Extensions.DistributedLock -Version 1.15.0

1.2、配置信息

public class Startup
  {
public void ConfigureServices(IServiceCollection services)
        {
            services.AddHummingbird(hb =>
            {
                hb.AddDistributedLock(option =>
                 {
                     option.WithDb(0);
                     option.WithKeyPrefix("");
                     option.WithPassword("123456");
                     option.WithServerList("127.0.0.1:6379");
                     option.WithSsl(false);
                 });               
            });
        }
    }

1.3、分布锁使用例子

namespace Hummingbird.Example.Controllers{using Microsoft.AspNetCore.Mvc;using System;using System.Threading.Tasks;    [Route("api/[controller]")]public class DistributedLockController : Controller    {public DistributedLockController(Hummingbird.Extensions.DistributedLock.IDistributedLock distributedLock)        {this.distributedLock = distributedLock;        }private readonly Hummingbird.Extensions.DistributedLock.IDistributedLock distributedLock;        [HttpGet]        [Route("Test/{lockName}")]public async Task<string> Test(string lockName="key1")        {var lockToken = Guid.NewGuid().ToString("N");try            {if (distributedLock.Enter(                        lockName,                         lockToken))                {await System.Threading.Tasks.Task.Delay(15000);// do somethingreturn "ok";                }else                {return "error";                }            }catch(Exception ex)            {return ex.Message;            }finally            {               distributedLock.Exit(lockName, lockToken);            }        }    }}

2、分布式缓存

2.1、安装

可以直接引用,或者通过Nuget直接安装

Install-Package Hummingbird.Extensions.Cacheing -Version 1.15.0

2.2、配置信息

public class Startup
    {
public void ConfigureServices(IServiceCollection services)
        {

            services.AddHummingbird(hb =>
            {
                hb.AddCacheing(option =>
                {
                    option.WithDb(0);
                    option.WithKeyPrefix("");
                    option.WithPassword("123456");
                    option.WithReadServerList("192.168.109.44:6379");
                    option.WithWriteServerList("192.168.109.44:6379");
                    option.WithSsl(false);
                })

            });

        }
    }

2.3、配置Reids缓存

namespace Hummingbird.Example.Controllers
{
using Hummingbird.Extensions.Cacheing;
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;

    [Route("api/[controller]")]
public class CacheingController : Controller
    {
private readonly ICacheManager cacheManager;

public CacheingController(
            ICacheManager cacheManager)
        {
this.cacheManager = cacheManager;
        }

        [HttpGet]
        [Route("Test/{cacheKey}")]
public  string Test(string cacheKey="key1")
        {
var cacheValue = cacheManager.StringGet<string>(cacheKey);
if(cacheValue == null)
            {
                cacheValue = "value";
                cacheManager.StringSet(cacheKey, cacheValue);
            }
            return cacheValue;
        }
    }
}

项目地址

https://github.com/guoming/Hummingbird

最后

该项目涵盖的还是比较齐全的,对于初学者来说,也是比较容易入门,大家可以选择其中一个知识点学习,后面再扩展学习更多的知识。

今天就跟大家,分享到这边了,希望对您有帮助,欢迎点赞关注转发。

‍- End -

推荐阅读

用C#自己动手写个操作系统,爽!

一个Windows远程工具,小巧但实用,支持RDP、SSH、SFTP、FTP等多种协议

一个C#开发的Windows远程桌面工具

盘点6个.NetCore+Vue前后端分离的开源项目

一个为程序员定制的、WPF开发的小巧、美观桌面快捷工具

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程乐趣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值