微服务那些事

来,Consul 服务发现入个门(一看就会的那种)

2021-03-12  本文已影响0人  Code综艺圈

前言

在微服务架构中,对于一个系统,会划分出多个微服务,而且都是独立开发、独立部署,最后聚合在一起形成一个系统提供服务。当服务数量增多时,这些小服务怎么管理?调用方又怎么能确定服务的IP和端口?服务挂掉了又怎么办?单靠人工处理已经不太现实,使用系统统一管理就是最好的选择,常用的服务发现产品有:ConsulZookeeperEtcdEureka等,而对于Consul在.NetCore中是很火很火的,所以接下来肯定先聊它喽。

正文

Consul是一个支持多数据中心、分布式、高可用的服务发现和配置共享的系统,开箱即用,主要功能如下:

简单了解Consul功能之后,接下来就先说说服务发现健康检查的应用,大概的一个流程如下图:

image-20210311100147756

上图简单描述

接来从安装开始,做一个Demo演示,包括服务注册、服务查看、健康检查、服务失效之后发邮件通知功能,算是从开发到维护走了一个流程(不过只是演示的那种)。

1. 安装

Consul的安装可以说超级简单,进官网->下载->解压就完成安装啦,官网地址:https://www.consul.io/

找到下载页面,选择适合自己系统的版本,直接下载就行,如下图:

image-20210310232033732

下载完成之后,直接解压,然后打开命令行工具,运行一下是否正常,如下图:

image-20210310232359403

2. 注册服务

3. 查看服务

服务完成注册之后,肯定是要需要查看或使用,主要有以下三种方式:

4. 监视服务(异常通知相关人员)

对于服务本身,可能因为网络或软硬件的问题,导致服务挂掉,如果没有及时恢复,有些业务可能会导致后果比较严重,所以当服务挂掉时,及时通知是必须的;这里演示使用的是邮件的方式,需要简单设置一下发送邮箱;这里使用的是QQ邮箱发出,需要开启QQ邮箱相关服务,在QQ邮箱设置中开启即可,如下图:

image-20210311105409275

开启的时候需发送短信进行验证,然后会获得一个授权码,在后面发送邮件时会用到。

为了演示方便,发送邮件通知的逻辑是写在业务服务中,其实可以单独出来一个服务专门负责通知即可。代码逻辑如下:

image-20210311111150932

增加一个通知接口,供监听调用,当监听到服务故障时,就调用该接口发送邮件即可:

image-20210311111456473

代码准备好了,现在需要配置监视,只需要在配置目录下增加监视的配置文件即可,这里取名为watchs.json,内容如下:

image-20210311112010121

配置文件完成之后,重启Consul即可,命令和刚开始启动的一样; 然后将服务启动,为了测试方便,服务用命令的方式启动,方便关闭,命令如下:

<pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="bash" cid="n207" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px 0px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;"> dotnet ConsulCodeDemo.dll --urls "http://*:6688" # 指定端口启动
dotnet ConsulConfigDemo.dll # 默认就是5000,所以不用指定啦</pre>

注:执行以上命令需要进入对应编译的文件目录;

服务正常运行时,在Consul界面中可以看到各服务都是健康状态,然后将端口为5000的这个服务关掉(因为配置邮件发送的接口在6688上),Consul检测到就会自动调用接口,发送相关邮件。

image-20210311113152319

相关人员收到信息就可以及时进行处理。

源码地址:https://github.com/zyq025/IDS4Demo/tree/main/ConsulDemo

总结

好了,Consul初探先到这吧,入门还差点,毕竟还有很多没讲,关于常用命令、集群搭建、ACL配置等都没涉及,所以下一篇来聊聊集群搭建和ACL配置,对于常用命令的使用,一边搭建环境,一边进行解释说明。

一个被程序搞丑的帅小伙,关注"Code综艺圈",跟我一起学~~~

上一篇下一篇

猜你喜欢

热点阅读