winserver的consul部署实践与.net core客户端使用(附demo源码)
前言
随着微服务兴起,服务的管理显得极其重要。都知道微服务就是”拆“,把臃肿的单块应用,拆分成多个轻量级的服务,每个服务可以在短周期内重构、迭代、交付。随着微服务的数量增多,因量变引起了质量,带来新的问题其中一个是服务的管理问题。随着业务发展微服务增多,可能技术负责人也无法清楚记着服务的部署情况,服务的健康也不能时刻关注着,因此服务治理系统的作用必不可少。
本篇文章的源码:
demo:https://github.com/SkyChenSky/Consul.Demo
封装:https://github.com/SkyChenSky/Sikiro.Tookits.Consul
Consul
Consul是一款简单、易用、可伸缩性强的服务治理系统。
主要核心功能有:
服务发现
健康检查
键值存储
多数据中心
consul代理会每个一段时间对注册中心的服务节点进行访问,如果响应码为“20X"认为是健康。
键值存储可以认为是一个简易的k/v数据库,因此可以用此来存放配置信息。
服务发现
服务发现分服务注册和服务查找。
服务注册
将服务节点信息(地址+端口)添加(删除)到注册表,注册表会记录着服务的节点信息和状态
服务查找
由其他的服务或者系统通过注册表查询到指定可用服务的节点信息。
服务发现的方式
服务发现的方式又分自主式和代理式。
自主式
由各个服务主动的将自己节点信息添加(删除)到注册中心。实现是通过统一封装或者程序库,由服务各个节点承担服务发现的功能,与代理式相比由各自节点分担的访问压力。
代理式
由一个系统(负载均衡系统)或者服务(API网关)来完成服务发现。因为由一个系统或者服务完成,随着注册服务的增加会带来性能瓶颈,因此需要对此做集群。
Consul模式
Consul有两种模式,Client和Server,无论各种模式都有一个consul agent。
Client模式
Client模式是一个轻量级的consul agent,只拥有注册服务、健康检查、转发查询等功能。
Server模式
Server模式与Client模式相比,除了拥有Client模式的功能还多出了数据存储,leader选举等。
官方建议Server模式应保证3-5个,而且应该是奇数,为什么呢,因为少于3个无法保证高可用,多于5个又会给数据库同步的一致性带来压力,而Client数量控制则没有讲究。
集群部署
下载consul https://www.consul.io/downloads.html
在服务器A,打开cmd,
consul agent -server -bootstrap-expect=1 -bind=192.168.20.80 -client=192.168.20.80 -join=192.168.20.80 -datacenter=dc1 -data-dir=data -ui -node=consul-80
在服务器B,打开cmd,
consul agent -server -bind=192.168.20.81 -client=192.168.20.81 -join=192.168.20.80 -data-dir=data -node=consul-81
打开浏览器输入http://192.168.20.80:8500
指令简析
-server
consul以server模式启动,不填则默认以client模式
-bootstrap-expect=1
集群节点数,当集群节点数达到声明数量才会进行数据同步
-bind=192.168.20.80
当前consul服务绑定地址
-client=192.168.20.80
http接口绑定地址,客户端调用需要
-join=192.168.20.80
启动服务时加入目标集群
-node=consul-81
服务节点名称
-ui
启动web管理后台
客户端实践
安装Consul
封装扩展
只贴部分核心代码,具体可以查看demo源码。
注入ConsulClient
把当前服务注册到Consul
添加健康检查接口
与上述封装可以在同一个库,避免每个web服务都要写一个
在Startup.cs对Consul封装进行调用
ConfigureServices
Configure
K/V扩展
只实现了put、get、delete,剩下可以自行按需添加
部署启动
修改appsettings.json,填写目标consul地址和本服务地址
启动后,如果服务正常则可以显示下图效果。
原文地址:https://www.cnblogs.com/skychen1218/p/9330870.html
.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
winserver的consul部署实践与.net core客户端使用(附demo源码)相关推荐
- ASP.NET 3.5 新特性开发向导实践(附项目源码下载)
ASP.NET 3.5 新特性开发向导实践(附项目源码下载) 本篇文章将演示ASP.NET 3.5 部分新功能.新特性,包括LINQ.ListView控件.LinqDataSource.DataPag ...
- .NET Core 3.0之深入源码理解Startup的注册及运行
开发.NET Core应用,直接映入眼帘的就是Startup类和Program类,它们是.NET Core应用程序的起点.通过使用Startup,可以配置化处理所有向应用程序所做的请求的管道,同时也可 ...
- vscode插件开发实践与demo源码
vscode插件开发实践与demo源码 写在前面 工欲善其事必先利其器.vscode作为优秀的开发工具,给我的日常开发工作提供了极大的便利.其拓展机制更是如此. 但是,最近在做年度专业线任务时,有需要 ...
- python 自动化微信小程序_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...
原标题:干货 | 微信小程序自动化测试最佳实践(附 Python 源码) 本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版. 随着微信小程序的功能和生态日益完善, ...
- Webrtc从理论到实践七: 官方demo源码走读(peerconnection_server)
系列文章目录 Webrtc从理论到实践一:初识 Webrtc从理论到实践二: 架构 Webrtc从理论到实践三: 角色 Webrtc从理论到实践四: 通信 Webrtc从理论到实践五: 编译webrt ...
- 关于Asp.net core配置信息读取的源码分析梳理
概述 我们都知道asp.net core配置信息的读取离不开IConfigurationSource和IConfigurationProvider这两个类,ConfigurationSource可以提 ...
- .NET Core 3.0之深入源码理解HealthCheck(一)
写在前面 我们的系统可能因为正在部署.服务异常终止或者其他问题导致系统处于非健康状态,这个时候我们需要知道系统的健康状况,而健康检查可以帮助我们快速确定系统是否处于正常状态.一般情况下,我们会提供公开 ...
- .NET Core 3.0之深入源码理解Host(二)
写在前面 停了近一个月的技术博客,随着正式脱离996的魔窟,接下来也正式恢复了.本文从源码角度进一步讨论.NET Core 3.0 中关于Host扩展的一些技术点,主要内容是关于创建Long Run ...
- .NET Core 3.0之深入源码理解Configuration(一)
微软在.NET Core里设计出了全新的配置体系,并以非常灵活.可扩展的方式实现.从其源码来看,其运行机制大致是,根据其Source,创建一个Builder实例,并会向其添加Provider,在我们使 ...
最新文章
- 深度学习LiDAR定位:L3-Net
- R语言dplyr包的mutate函数将列添加到dataframe中或者修改现有的数据列:使用na_if()函数将0值替换为NA值、负收入替换为NA值
- 【原创】Github团队协作之Pull请求
- 卸料装置弹性零件的计算方法_机械零件加工变形的原因及其改进探究
- NR 5G MAC媒体接入控制
- 速领:1024大礼包
- linux 下基于jrtplib库的实时传送实现
- Leetcode--190. 颠倒二进制位
- 2016十大优秀jQuery插件推荐
- springmvc 全局编码_SpringMVC请求参数和响应结果全局加密和解密
- 大数据平台设计哲学的重构
- python多进程间通信
- Servlet乱码解决
- 【探索PowerShell 】【七】变量
- 镜像文件下载及VM部署win xp 保姆级教程
- windows 2012安装证书服务器,windows 2012 RADIUS服务器认证问题
- VBS病毒(爱虫病毒) 源代码
- 家里电线装多大的好?
- linux———/bin/sh、 /bin/bash、 /bin/dash的区别
- 如何浏览与下载全球免费的地图高分辨率(亚米级)的遥感影像?