.net core下简单构建高可用服务集群
一说到集群服务相信对普通开发者来说肯定想到很复杂的事情,如zeekeeper ,反向代理服务网关等一系列的搭建和配置等等;总得来说需要有一定经验和规划的团队才能应用起来。在这文章里你能看到在.net core下的另一种集群构建方案,通过Beetlex即可非常便捷地构建高可用的集群服务。
简述
Beetlex的Webapi集群应用并没有依赖于第三方服务,而是由Beetlex自身完成;它主要是通过Client和策略监控服务相结合的方式来实现集群化的服务负载访问。以下是服务结构:
client一旦从配置中心获取了集群的策略,就会脱离配置中心独自进行负载处理;在运行中会定时从配置中心获取更新策略,在这个过程中即使配置中心不可用也不影响整体服务处理。以下是配置中心的策略管理:
通过管理中心可以对不同的URL进行负载权重配置,默认可以配置一个*
来处理所有负载;当到达一定规模的情况可以针对某些URL规则来进行策略配置.中心除了可以配置策略外还提供了服务资源监控,可以更方便地进行权重调整。
应用
接下来通过一个简单的示例来介绍如何通过Beetlex构建高可用的webapi集群服务.
- 创建一个.net core控制台项目
- 引用
Beetlex.FastHttpApi
- 编写一个简单的
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 };}}
- 运行后浏览器访问一下
- 创建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://my.oschina.net/ikende/blog/2998894
.net core下简单构建高可用服务集群相关推荐
- .Net Core下使用KeyDB高可用缓存集群
前言 提到缓存,首先会想到Redis,它是目前最流行的开源内存键值存储服务. 使用单个Redis实例进行缓存非常简单,如果创建高可用集群,则需要一个主节点.两个从节点和多个监视主节点的哨兵节点: 哨兵 ...
- 构建高可用ZooKeeper集群
构建高可用ZooKeeper集群 2017/01/23 | 分类: 技术架构 | 0 条评论 | 标签: ZOOKEEPER 分享到:9 原文出处: cyfonly ZooKeeper 是 Apach ...
- 构建高可用ZooKeeper集群(转载)
ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 Zo ...
- 如何构建高可用ZooKeeper集群
ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 Zo ...
- zookeeper安装包_构建高可用ZooKeeper集群
ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效.高可用的分布式协调服务,提供了诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知和分布式锁等分布式基础服务.由于 Zo ...
- kube-vip构建高可用k8s集群
部署目的 目前k8s发展太快,版本迭代和更新等,导致现在有很多冲突.不适用的解决方案,故搭建一套各个软件版本都较新的集群. 物理机器和网络准备 一台5600x+32G+有外网的电脑. VMWARE虚拟 ...
- CentOS7+MySQL/MariaDB+Galera+HAProxy+Keepalived构建高可用数据库集群
方案优势: Galera能够实现MySQL/MariaDB数据库的主主复制和多主复制等模式,这些复制模式都是同步进行的,同步时间非常短 每一个节点都可以同时写入和读取,当某一节点发生故障时,可自动从集 ...
- MySQL服务MySQL+MHA高可用服务集群搭建
MySQL MHA MySQL MHA 一.MHA概念 1.MHA 的组成 2.MHA 的特点 二.搭建MySQL+MHA 1.所有服务器,关闭系统防火墙和安全机制 2.修改 master(192.1 ...
- Java集群优化——dubbo+zookeeper构建高可用分布式集群
为什么80%的码农都做不了架构师?>>> 不久前,我们讨论过Nginx+tomcat组成的集群,这已经是非常灵活的集群技术,但是当我们的系统遇到更大的瓶颈,全部应用的单点服务器 ...
最新文章
- CloudCompare的介绍
- btf-raft共识算法_了解Raft共识算法:学术文章摘要
- 青龙羊毛——最美阅读
- jaxb和dozer简介
- Java时间对比------实际时间和设置时间对比
- [ASP.NET MVC]让Html.RenderAction支持Lamda表达式
- 测试开发之软件测试模型
- Entity Framework 4.0 FK Properties FK Associations
- Day83.尚好房 — 用户管理— Hplus(UI框架)、Layer(弹出层框架)、增删改查、分页组件 :分页查询
- 知识点1--认识SSM框架并准备项目
- basler相机详细使用说明
- 小米平板2刷remix_【游戏体验】老旧电脑装安卓系统当平板玩街球
- Lesson 13-14 How often do you exercise?
- 电脑文件误删除如何恢复?可以快速找回
- 强烈推荐:视频该如何推广?
- Java-IO流(1)(字节、字符输入输出流、文件拷贝)
- android调用最新的谷歌地图方法
- Mac 远程登陆阿里云服务器
- sql里left join的效率问题
- 电视家海信html安装不了,海信电视(盒子)安装电视家方法
热门文章
- linux打开文件命令_详解Linux中3个文件查找相关命令
- mc服务器隐藏指令显示,服务器常用指令 搬运自Mc服主网
- oracle 08177,Java OracleDatabaseException: ORA-08177: 无法连续访问此事务处理问题解决
- UI设计灵感|如果你想设计一款有趣的状态提示,看这里OOPS!
- UI素材干货|听说UI设计师更喜欢Sketch
- 数据可视化设计的UI实用模板素材
- 如何设置的单位为m_如何将视频设置为网页背景
- 全网唯一C++调用由com组件生成的dll教程
- The Real Time Linux and RT Applications | PREEMPT_RT
- linux tar 命令