.net core下简单构建高可用服务集群 原 荐

栏目: ASP.NET · 发布时间: 6年前

内容简介:一说到集群服务相信对普通开发者来说肯定想到很复杂的事情,如zeekeeper ,反向代理服务网关等一系列的搭建和配置等等;总得来说需要有一定经验和规划的团队才能应用起来。在这文章里你能看到在.net core下的另一种集群构建方案,通过Beetlex即可非常便捷地构建高可用的集群服务。Beetlex的Webapi集群应用并没有依赖于第三方服务,而是由Beetlex自身完成;它主要是通过Client和策略监控服务相结合的方式来实现集群化的服务负载访问。以下是服务结构:

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

简述

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

.net core下简单构建高可用服务集群 原 荐

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

.net core下简单构建高可用服务集群 原 荐

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

应用

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

.net core下简单构建高可用服务集群 原 荐

  • 引用 Beetlex.FastHttpApi

.net core下简单构建高可用服务集群 原 荐

  • 编写一个简单的 HelloWorld webapi服务
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 };
        }
    }
  • 运行后浏览器访问一下

.net core下简单构建高可用服务集群 原 荐

  • 创建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");
  • 集群中心配置

.net core下简单构建高可用服务集群 原 荐

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

配置负载

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

.net core下简单构建高可用服务集群 原 荐

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

.net core下简单构建高可用服务集群 原 荐

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

.net core下简单构建高可用服务集群 原 荐

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

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


以上所述就是小编给大家介绍的《.net core下简单构建高可用服务集群 原 荐》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

大学程序设计课程与竞赛训练教材

大学程序设计课程与竞赛训练教材

吴永辉、王建德 / 机械工业出版社 / 2013-6 / 69.00

本书每章为一个主题,实验内容安排紧扣大学算法和数学的教学,用程序设计竞赛中的算法和数学试题作为实验试题,将算法和数学的教学与程序设计竞赛的解题训练结合在一起;在思维方式和解题策略的训练方面,以问题驱动和启发式引导为主要方式,培养读者通过编程解决问题的能力。 本书特点: 书中给出的234道试题全部精选自ACM国际大学生程序设计竞赛的世界总决赛以及各大洲赛区现场赛和网络预赛、大学程序设计竞......一起来看看 《大学程序设计课程与竞赛训练教材》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具