8分钟学会Consul集群搭建及微服务概念

Consul介绍:

Consul 是由 HashiCorp 公司推出的开源软件,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其他工具(比如 ZooKeeper 等),使用起来也较为简单。

Consul的如何实现的?

Consul 用 Golang 实现,因此具有天然可移植性(支持 Linux、windows 和 Mac OS X ),它的安装包仅包含一个可执行文件,方便部署,与 Docker 等轻量级容器可无缝配合。

微服务概念:

640?wx_fmt=png

微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

尽管“微服务”这种架构风格没有精确的定义,但其具有一些共同的特性,如围绕业务能力组织服务、自动化部署、智能端点、对语言及数据的“去集中化”控制等等。简而言之,微服务架构风格是一种将单个应用程序开发为一套小型服务的方法,每个小型服务都在自己的流程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。这些服务围绕业务功能构建,可通过全自动部署机制独立部署。这些服务至少集中管理,可以用不同的编程语言编写,并使用不同的数据存储技术。

 Consul的安装与配置

我们需要去下载Consul ,下载很简单,直接去:https://www.consul.io/downloads.html 选择对应的平台即可,如果你的是Mac OS x 那么直接双击那个可执行文件即可,我的平台是windows10 ,那么相对于MacOsX是比较困难的,即配置环境变量,将文件的位置放到你的path中就可以了,其目的就是为了在Cmd终端中能够键入执行Consul命令,如果你的环境变量已经配置成功,请在Cmd中敲击consul,如果结果如下,那么恭喜您,你成功进入Consul大门。

640?wx_fmt=png

 名词解释

Client : Consul 的 Client模式,就是客户端模式。是 Consul 节点的一种模式,这种模式下,所有注册到当前节点的服务会被转发到 Server,本身是不持久化这些信息。
Server :Consul 的 Server 模式,表明这个 Consul 是个 Server ,这种模式下,功能和 Client 都一样,唯一不同的是,它会把所有的信息持久化的本地,这样遇到故障,信息是可以被保留的。
Server-Leader:  Server 是它们的老大,它和其它 Server 不一样的一点是,它需要负责同步注册的信息给其它的 Server ,同时也要负责各个节点的健康监测。
raft: Server 节点之间的数据一致性保证协议使用的是 raft,而 zookeeper 用的 paxos,etcd采用的也是raft
服务发现协议:Consul 采用 http 和 DNS 协议,etcd 只支持 http 。
服务注册:Consul 支持两种方式实现服务注册,一种是通过 Consul 的服务注册 Http API,由服务自己调用 API 实现注册,另一种方式是通过 json 格式的配置文件实现注册,将需要注册的服务以 json 格式的配置文件给出。Consul 官方建议使用第二种方式。

启动Consul

如果是在单机情况下使用开发模式启动,在终端中输入:

1

~ » consul agent -dev

开启Consul 集群

首先创建Server-Leader,即老大,那么在终端上输入以下命令:

640?wx_fmt=png

consul agent -server 表示以服务器模式启动代理。其中:

-bootstrap-expect=2 表示节点个数为2个。
-node=consul-server-1 表示节点名称
-client=0.0.0.0 表示客户端 IP
-bind=10.211.55.2 表示服务端 IP
-datacenter=dc1 数据中心名称

需要注意的是,如果你启动的Server模式的话,你一定要注意node名不要相同,否则将会替换你的项。

那么Server-Leader已经创建了,需要别的服务器去进行连接了,如果是Server模式,输入以下命令,只不过是拼接了-join id.

640?wx_fmt=png

  • -data-dir=/tmp/consul 表示临时数据存储路径

  • -join 10.211.55.2 表示加入 10.211.55.2 所在的集群

这个时候如果出现Consul agent Running!!还有一大堆东西。那么说明你已经集群成功了,你可以去自己的通过Consul提供的UI去看节点状况,地址为 你自己的id+8500端口,即192.168.10.6:8500或者你的子节点均可,但是如果说你的节点个数是4个,你还有几个节点没有放上去,那么UI是出不来了(有可能会报500错)。

那么除了UI查看节点以外,还可以通过终端输入指令来查看我们的节点状态。

1

consul members

如果我们希望得到更为详细的信息,可以使用指令来查看

1

consul operator raft list-peers

如果说你没有服务器集群,那么输入以上命令就会出现以下结果:

640?wx_fmt=png

 创建.NET Core API 并注册服务

如果你的 Consul Cluster 已经搭建完成,那么可以接下来创建一个.NET Core API 来实现服务的注册。

我们创建一个空的解决方案,添加解决方案文件夹 “服务注册”,创建Api项目。

640?wx_fmt=png

 

修改启动配置文件

在launchSettings.json中修改启动ip和端口。

640?wx_fmt=png

添加健康检查控制器

在项目中添加一个名为  HealthController 的 API 控制器,用于在将服务注册到 Consul 后的健康检查。

640?wx_fmt=png

在项目中添加Consul,或者键入命令,这当然,由你选择。

640?wx_fmt=png

注册Consul中间件,修改Startup.cs文件,这里使用的是 Consul 的服务注册 Http API。

640?wx_fmt=png

640?wx_fmt=png

 完成后,启动项目,此时已成功注册。

原文地址:https://www.cnblogs.com/ZaraNet/p/10123291.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/318440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最小代价(区间dp)(ybtoj)

文章目录题目描述解析代码题目描述 解析 (我觉得)很难的dp 思路是真的没有想出来 关键在于dp的设计: dp[l][r]:[l,r]的最小价值 f[l][r][a][b]:把l到r之间除了数值在[a,b]之间的数全部消掉需要的最小价值 &#xff08…

.net core i上 K8S(六).netcore程序的service网络代理模式

正文上一章我们讲了pod的hostip模式,但在生产环境中,我们都是通过service来访问k8s集群的,service有两种模式来暴漏端口,今天我们来分享一下1.clusterIP模式我们在创建service的时候,默认创建的时clusterIP模式&#x…

Jamie and Tree[CF916E]

Jamie and Tree[CF916E] 题意: 有一棵n个点的树,每个节点上有一个权值wi,最开始根为1号点.现在有3种 类型的操作: • 1 root, 表示将根设为root. • 2 u v x, 设u, v的最近公共祖先为p, 将p的子树中的所有点的权值加…

领域驱动设计,让程序员心中有码(三)

“正如西方古典哲学在现代社会逐渐式微,成为少数内心丰满者们填充自己精神世界的宝贵食物,UML也这样;互联网技术飞速发展的今天,各类软件设计思想层出不穷,正是站在UML和其他各种软件基础理论巨人的肩膀上,…

Tavan

Tavan–简单的k进制题 呵呵真的简单 也就是考试没做出来罢了,不慌不慌,奶我一口,还能活 【题目摘要】 题目描述 小 Zeljko 一直在阁楼里读他奶奶的旧信,并且发现了一个长度为 N 的单词。 不幸的是,由于溢出的墨水&…

.NET Core 2.x中使用Named Options处理多个强类型配置实例

来源: Using multiple instances of strongly-typed settings with named options in .NET Core 2.x作者: Andrew Lock译者: Lamond Lu.NET Core从1.0版本开始,就已经开始使用Options模式绑定强类型配置对象。从那时起到现在&…

YBTOJ:魔法数字(数位dp)

文章目录题目描述解析题目描述 解析 迷惑。。。 首先,比较容易想到用二进制状态压缩记录1-9是否在十进制中出现过 然后就是整除的问题 如果记录余数,它的模数又有9个 开九维余数直接爆炸。。。 怎么办嘞? 有一个结论: 若&#xf…

Prosjecni(构造)

Prosjecni 【题目摘要】 描述 Slavko很无聊,所以他把正整数填到N*N的方阵中。 如果他填出来的方阵满足以下条件,他会特别高兴: ●每行中的数字的平均值是一个位于同一行的整数。 ●每列中的数字的平均值是一个位于同一列的整数。 ●表中的所…

撒花!中文翻译仓库链接已加入 ML.NET 官方示例网站首页

从2018年12月02日决定开始做ML.NET 示例中文版https://github.com/feiyun0112/machinelearning-samples.zh-cn,然后以每天一篇的速度进行翻译,总共耗时15天,将现有的官方实例全部翻译成了中文,并提交了添加中文链接PR,…

P3803 【模板】多项式乘法(FFT)

P3803 【模板】多项式乘法(FFT) 题目描述 给定一个 n 次多项式 F(x),和一个 m 次多项式 G(x)。 请求出 F(x)和 G(x)的卷积。 从低到高输出F(x)*G(x)的系数 另一种问法: 如果有两个无限序列a和b,那么它们卷积的结果是…

YBTOJ:单词频率(AC自动机)

解析 我对力量一无所知 通过这题,可以看出我对AC自动机还是完全没有理解 qwq 首先容易想到: 建一课trie树,然后建树时记录每个串s的终点,这个点后面每被经过一次,就相当于出现一次该单词s 但是,这种“出现”…

一元一次方程

一元一次方程–逆波兰栈 【题目摘要】 题目描述 SLON是一个调皮的学生,为了让他静下心来,老师给他出了一道数学题: 给定表达式A,A中含有变量x和,-,*,(,)这些符号,括号成对出现,一个算术运算符均对应两个操…

.net core上 K8S(七).netcore程序的服务发现

正文上一章我们分享了k8s的网络代理模式,今天我们来分享一下k8s中的服务发现。1.环境变量模式的服务发现k8s默认为我们提供了通过环境变量来实现服务发现的功能,前提是1.需要service在pod之前创建2.适用于同一命名空间1.1创建servicekubectl create -f n…

ASP.NET Core 实战:使用ASP.NET Core Web API 和 Vue.js 搭建前后端分离项目

一、前言这几年前端的发展速度就像坐上了火箭,各种的框架一个接一个的出现,需要学习的东西越来越多,分工也越来越细,作为一个 .NET Web 程序猿,多了解了解行业的发展,让自己扩展出新的技能树,对…

【CF1199 D,E, F】Welfare State // Matching vs Independent Set // Rectangle Painting 1

2019-08-15下午三道练习题CF1199 思路有点难想 but很好实现 这是原网站链接:传送门 这里只完成D, E, F三题 文章目录D:Welfare State题目大意正解瞅瞅代码E:Matching vs Independent Set题目大意正解代码实现F:Rectangle Painting 1题目大意正解代码实现…

YBTOJ:前缀匹配(AC自动机)

文章目录题目描述解析代码题目描述 解析 做的不错 把trie树真的当成一棵树递归即可 注意一个标记时的问题&#xff1a; void AC(){int lstrlen(s01),pl1;for(int i1;i<l;i){int aask(s0[i]);pltr[pl][a];int kpl;while(k>1){if(ok[k]) break;//注意&#xff01;ok[k]1;…

[HAOI2006]均分数据

[HAOI2006]均分数据 题解&#xff1a; 题目稍微解释一下&#xff1a; 把n个数以分为m组&#xff0c;计算每一组的和&#xff0c;求得到的这m个数的方差。由于分法是任意的&#xff0c;我们要求这些方差中的最小值 我们先用STL中的函数random_shuffle()用来对一个元素序列进行…

Docker最全教程——从理论到实战(八)

在本系列教程中&#xff0c;笔者希望将必要的知识点围绕理论、流程&#xff08;工作流程&#xff09;、方法、实践来进行讲解&#xff0c;而不是单纯的为讲解知识点而进行讲解。也就是说&#xff0c;笔者希望能够让大家将理论、知识、思想和指导应用到工作的实际场景和实践之中…

不定方程(质数与因数)

文章目录题目描述解析代码题目描述 数据范围有误&#xff01;应该是不超过1e6 解析 容易推出&#xff1a; y&#xff08;x∗*∗n!)/(x-n!) 换元&#xff0c;令tx-n&#xff01; 则&#xff1a; yn!(n!)2/t 因为x、y都与t一一对应 所以本题就是求 (n!)2 的因数个数 我们求出n&…

Matlab快速入门

命令行窗口 clc 清屏 clear 清理变量 常用矩阵&#xff1a; x[0:2] 这是转置符号xlinspace(0,2,5) 从0到2分配5个空间xzeros(2,3)两行三列全为0的矩阵、 ones(2)2行2列全为1的方阵 eye(2)单位阵 rand(1,2)产生一行二列的随机数&#xff08;从0到1之间均匀随机数&#xff09;固…