当前位置: 首页 > 编程笔记 >

详解.net core下如何简单构建高可用服务集群

漆雕伟志
2023-03-14
本文向大家介绍详解.net core下如何简单构建高可用服务集群,包括了详解.net core下如何简单构建高可用服务集群的使用技巧和注意事项,需要的朋友参考一下

一说到集群服务相信对普通开发者来说肯定想到很复杂的事情,如zeekeeper ,反向代理服务网关等一系列的搭建和配置等等;总得来说需要有一定经验和规划的团队才能应用起来。在这文章里你能看到在.net core下的另一种集群构建方案,通过Beetlex即可非常便捷地构建高可用的集群服务。

简述

Beetlex的Webapi集群应用并没有依赖于第三方服务,而是由Beetlex自身完成;它主要是通过Client和策略监控服务相结合的方式来实现集群化的服务负载访问。以下是服务结构:

client一旦从配置中心获取了集群的策略,就会脱离配置中心独自进行负载处理;在运行中会定时从配置中心获取更新策略,在这个过程中即使配置中心不可用也不影响整体服务处理。以下是配置中心的策略管理:

通过管理中心可以对不同的URL进行负载权重配置,默认可以配置一个*来处理所有负载;当到达一定规模的情况可以针对某些URL规则来进行策略配置.中心除了可以配置策略外还提供了服务资源监控,可以更方便地进行权重调整。

应用

接下来通过一个简单的示例来介绍如何通过Beetlex构建高可用的webapi集群服务.

创建一个.net core控制台项目

引用Beetlex.FastHttpApi

编写一个简单的HelloWorldwebapi服务

 class Program
  {
    private static BeetleX.FastHttpApi.HttpApiServer mApiServer;

    static void Main(string[] args)
    {
      mApiServer = new BeetleX.FastHttpApi.HttpApiServer();
      mApiServer.Debug();
      mApiServer.Register(typeof(Program).Assembly);
      mApiServer.Open();
      Console.Write(mApiServer.BaseServer);
      Console.Read();
    }
  }
  [Controller]
  public class Home
  {
    /// <summary>
    /// Hello Word
    /// </summary>
    /// <param name="name">string: you name</param>
    /// <returns>string</returns>
    [Get(Route = "{name}")]
    [DefaultJsonResultFilter]
    public object Hello(string name)
    {
      return new { Hello = "hello " + name, Time = DateTime.Now };
    }
  }

运行后浏览器访问一下

创建Client调用

同样是构建一个控制台程序,然后引用BeetleX.FastHttpApi,定义访问接口

  public interface IDataService
  {
    [Get(Route = "hello/{name}")]
    string Hello(string name);
  }

创建调用接口代理

HttpClusterApi = new BeetleX.FastHttpApi.Clients.HttpClusterApi();
DataService = HttpClusterApi.Create<IDataService>();
await HttpClusterApi.LoadNodeSource("default", "http://localhost:8080");//加载配置服务中的default节点

调用服务

var result = DataService.Hello("henry");

集群中心配置

这样一个集群化的服务就完成,可能有人会问这明明就是单一服务,怎可能是高可用的服务集群呢?接下来我们做一系的压测并通过配置中心实现无缝地增加服务来应对测试的处理。

配置负载

高可用集群才是我们的目标,但实际应用中也不可能一下子就有这样的需求,往往是随意着业务的增长集群服务的需求会慢慢显露出来;接下来就对上面的单服务进行一个压力测试,开启了40个线程进行压力测试,由于部署服务只是两核,所以一下子就把资源压满了。

接下来需要新的节点服务来支撑并发处理,这个时候只需要新部署一份服务,在配置中心添加节点即可。

有新的服务加入后,并发由原来的1W多变成3W,而这个调整是完全不需要调整任何程序的!由于压测下来两台服务器的资源都比较吃紧,所以再添加一台服务来应对并发,但这一次添加的服务权重只有之前两台的一半。

从测试结果来看最后添的服务,依据权重的设置来承载了相应的并发处理。

通过以上示例,你会发现通过Beetlex构建高可用的webapi集群服务是一件非常简单的事情。

项目地址:https://github.com/IKende/FastHttpApi

集群策略管理项目地址:https://github.com/IKende/ClusterConfiguration

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • Even in the future, nothing works! — Spaceballs 一切迟早都会发生故障。高可用服务就是指当一个主机或网络线路失效时仍旧能够提供服务。 高可用性的主要技术就是冗余,另外,这个问题的解决就是以投放更多硬件设备而著称的。 虽然最终肯定会有单独的一台服务器失效,但是两台服务器同时失效的概率是不太高的, 这对大多数的应用程序提供了一个良好的冗余水平。 最简单的方

  • 本文向大家介绍centos 搭建ftp服务器详解及简单介绍,包括了centos 搭建ftp服务器详解及简单介绍的使用技巧和注意事项,需要的朋友参考一下 centos 搭建ftp服务器 1.安装vsftpd sudo yum install vsftpd 2.配置vsftpd.conf 3.添加ftp用户 4.上传权限 5.设置vsftp 开机启动 chkconfig vsftpd on 6.添加防

  • 本文向大家介绍使用Topshelf组件构建简单的Windows服务,包括了使用Topshelf组件构建简单的Windows服务的使用技巧和注意事项,需要的朋友参考一下  很多时候都在讨论是否需要了解一个组件或者一个语言的底层原理这个问题,其实我个人觉得,对于这个问题,每个人都有自己的看法,个人情况不同,选择的方式也就会不同了。我个人觉得无论学习什么,都应该尝试着去了解对应的原理和源码(这里就不要急

  • 软件介绍: 这是由北邮学生所开发的一个服务器集群解决方案,软件实现。实际上这是系列软件的第一个版本,纯为练手,但绝对可用。 按照系统提示安装后会安装一个高可用的6机以上服务器集群,包括两个负载均衡节点,两个数据库节点和多个WEB节点,安装比较复杂建议安装时与开发人员联系一下,QQ:330504591,并确认联网安装 开发和测试时都是使用了ubuntu12.04系统,所以建议在几台空的ubuntu1

  • 主要内容:一、概述,二、业务场景,三、线上经验—如何设置Hystrix线程池大小,四、线上经验—如何设置请求超时时间,五、问题解决,六、总结一、概述  这篇文章我们来聊聊在微服务架构中,到底如何保证整套系统的高可用? 其实排除掉一些基础设施的故障,比如说Redis集群挂了,Elasticsearch集群故障了,MySQL宕机了。 微服务架构自己本身最最核心的保障高可用的措施,就是两个: 一个是基于Hystrix做资源隔离以及熔断; 另一个是做备用降级方案。   如果资源隔离和降级都做的很完善,那

  • 本文向大家介绍详解如何用python实现一个简单下载器的服务端和客户端,包括了详解如何用python实现一个简单下载器的服务端和客户端的使用技巧和注意事项,需要的朋友参考一下 话不多说,先看代码: 客户端: 服务器: 前几天有写一个基于UDP的简单程序,今天学习了TCP,TCP与UDP 的区别与联系其实已经写得很清楚了,这里不再多说。今天使用的TCP,在文件下载方面应用更加广泛(可靠)。客户端分析