网站ui设计欣赏,设计师做兼职的网站,wordpress神秘礼盒插件,wordpress搜索模板前言在微服务架构中#xff0c;对于一个系统#xff0c;会划分出多个微服务#xff0c;而且都是独立开发、独立部署#xff0c;最后聚合在一起形成一个系统提供服务。当服务数量增多时#xff0c;这些小服务怎么管理#xff1f;调用方又怎么能确定服务的IP和端口#xf… 前言在微服务架构中对于一个系统会划分出多个微服务而且都是独立开发、独立部署最后聚合在一起形成一个系统提供服务。当服务数量增多时这些小服务怎么管理调用方又怎么能确定服务的IP和端口服务挂掉了又怎么办单靠人工处理已经不太现实使用系统统一管理就是最好的选择常用的服务发现产品有Consul、Zookeeper、Etcd、Eureka等而对于Consul在.NetCore中是很火很火的所以接下来肯定先聊它喽。正文Consul是一个支持多数据中心、分布式、高可用的服务发现和配置共享的系统开箱即用主要功能如下服务发现可以通过Consul客户端注册服务这里服务可以是API站点、Redis服务器、MySql服务器等当其他客户端需要使用对应的服务时Consu可以通过DNS或HTTP的形式将服务返回给所需客户端无需再手动指定IP和端口由Consul统一管理。健康检查Consul提供对各服务进行检查的功能相关人员可以通过检查信息关注各服务的运行情况而对于的服务的使用者可以避免访问不健康的服务如当一个API站点挂掉了调用方从Consul中获取服务信息时就获取不到而是返回健康的服务信息从而保证调用API正常。键值对存储可以存储键值对数据很适合当配置中心使用。比如有多个服务每个服务都一些配置信息可以将其统一配置在Consul中避免每一个服务重复配置很大程度降低了配置错误导致的风险。多数据中心Consul支持多个开箱即用的数据中心每个数据中心独立运行。简单了解Consul功能之后接下来就先说说服务发现和健康检查的应用大概的一个流程如下图上图简单描述各服务通过配置文件或代码的形式进行注册即把信息报给ConsulConsul根据注册的信息对已经注册服务进行健康检查Grpc、TCP、HTTP方式都可以客户端如果需要使用服务信息如IP和端口可以通过Consul进行获取健康的服务(服务发现)DNS和HTTP两种方式都可以接来从安装开始做一个Demo演示包括服务注册、服务查看、健康检查、服务失效之后发邮件通知功能算是从开发到维护走了一个流程(不过只是演示的那种)。1. 安装Consul的安装可以说超级简单进官网-下载-解压就完成安装啦官网地址https://www.consul.io/找到下载页面选择适合自己系统的版本直接下载就行如下图下载完成之后直接解压然后打开命令行工具运行一下是否正常如下图2. 注册服务配置文件形式首先肯定需要准备一个配置文件这里为了查看Consul运行时监控的服务数据也可以指定对应数据输出的目录所以还需要一个数据目录如下config作为配置文件的存放位置Conusl启动时可以指定配置文件位置然后可以自动加载该目录下所有json文件data这个就是一个空文件夹用于存储Consul运行时产生的数据这个不是必须的。有了目录结构之后然后在config中创建一个services.json文件里面内容如下配置信息见上图已经做了相关说明而对于健康检查因为上图配置的是以HTTP的形式检查API服务是否正常即能否正常访问对应地址当然可以根据场景需要配置检测方式比如Grpc、TCP、脚本等。配置文件准备好了之后可以直接运行Consul啦这里为了快速入门先以开发模式运行如下命令解析agent运行代理-dev以开发模式运行快速开启一个Server信息如上图-confile-file指定Consul配置文件所在的目录然后就自动加载该目录下的所有json文件-data-dir : 指定Consul运行时存储数据的目录一般包含服务的状态及相关信息用配置文件这种方式代码无需更改只需保证服务运行的时候对应的IP地址、端口、健康检查的路径正确即可。由于现在还没有对应的服务根据上面配置的的信息每个5s会检查一次当前检查的服务肯定是不健康的Consul控制台会持续输出如下信息根据配置的信息添加一个服务新建一个WebAPI项目增加一个Health健康检查的Controller然后指定端口为5000运行控制器代码如下运行之后Consul 代理就检测到了如下嵌入代码形式代码注册的形式需要引入Consul包然后在代码中指定Consul地址和配置相关服务信息即可其他无需改变注册代码逻辑如下先在配置文件中配置相关信息服务注册代码如下注册服务方法完成之后直接在Startup文件中Configure方法的最后调用即可。然后指定对应端口启动服务即可演示设置的端口为6688这样服务就注册完啦Consul也能检测到。3. 查看服务服务完成注册之后肯定是要需要查看或使用主要有以下三种方式UI形式Consul提供对应的页面查看注册服务的相关信息当然也可以配置相关信息。当Consul启动之后就可以通过http://localhost:8500/这里演示是本地这个地址访问到对应的界面如下界面就不挨个截图啦小伙伴自己点点。这个可视化界面还是很给力的。DNS和HTTP形式同样也可以通过用命令方式进行查看有两种形式DNS和HTTP。这里先用HTTP的方式演示DNS方式留给小伙伴吧很简单的。HTTP形式直接调用接口即可(当然可以进行权限控制)查询服务常用的接口地址如下查询所有服务http://localhost:8500/v1/catalog/services根据服务名称查询服务服务名称就是在注册服务时指定的名称http://localhost:8500/v1/catalog/service/服务名称当同名称的服务有多个时可以根据Tag过滤http://localhost:8500/v1/catalog/service/服务名称?tagtest6688查询其他类型信息也和上面类似比如查询节点信息、查询数据中心信息代码形式需要依赖Consul包代码如下运行结果如下当然这种形式也能获取Consul其他信息小伙伴调试一下就知道啦4. 监视服务(异常通知相关人员)对于服务本身可能因为网络或软硬件的问题导致服务挂掉如果没有及时恢复有些业务可能会导致后果比较严重所以当服务挂掉时及时通知是必须的这里演示使用的是邮件的方式需要简单设置一下发送邮箱这里使用的是QQ邮箱发出需要开启QQ邮箱相关服务在QQ邮箱设置中开启即可如下图开启的时候需发送短信进行验证然后会获得一个授权码在后面发送邮件时会用到。为了演示方便发送邮件通知的逻辑是写在业务服务中其实可以单独出来一个服务专门负责通知即可。代码逻辑如下增加一个通知接口供监听调用当监听到服务故障时就调用该接口发送邮件即可代码准备好了现在需要配置监视只需要在配置目录下增加监视的配置文件即可这里取名为watchs.json内容如下配置文件完成之后重启Consul即可命令和刚开始启动的一样然后将服务启动为了测试方便服务用命令的方式启动方便关闭命令如下dotnet ConsulCodeDemo.dll --urls http://*:6688 # 指定端口启动
dotnet ConsulConfigDemo.dll # 默认就是5000所以不用指定啦
注执行以上命令需要进入对应编译的文件目录服务正常运行时在Consul界面中可以看到各服务都是健康状态然后将端口为5000的这个服务关掉(因为配置邮件发送的接口在6688上)Consul检测到就会自动调用接口发送相关邮件。相关人员收到信息就可以及时进行处理。源码地址https://github.com/zyq025/IDS4Demo/tree/main/ConsulDemo总结好了Consul初探先到这吧入门还差点毕竟还有很多没讲关于常用命令、集群搭建、ACL配置等都没涉及所以下一篇来聊聊集群搭建和ACL配置对于常用命令的使用一边搭建环境一边进行解释说明。一个被程序搞丑的帅小伙关注Code综艺圈跟我一起学~~~图片