前言

随着微服务兴起,服务的管理显得极其重要。都知道微服务就是”拆“,把臃肿的单块应用,拆分成多个轻量级的服务,每个服务可以在短周期内重构、迭代、交付。随着微服务的数量增多,因量变引起了质量,带来新的问题其中一个是服务的管理问题。随着业务发展微服务增多,可能技术负责人也无法清楚记着服务的部署情况,服务的健康也不能时刻关注着,因此服务治理系统的作用必不可少。

本篇文章的源码:

demo:https://github.com/SkyChenSky/Consul.Demo

封装:https://github.com/SkyChenSky/Sikiro.Tookits.Consul

Consul

Consul是一款简单、易用、可伸缩性强的服务治理系统。

主要核心功能有:

  1. 服务发现

  2. 健康检查

  3. 键值存储

  4. 多数据中心

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源码)相关推荐

  1. ASP.NET 3.5 新特性开发向导实践(附项目源码下载)

    ASP.NET 3.5 新特性开发向导实践(附项目源码下载) 本篇文章将演示ASP.NET 3.5 部分新功能.新特性,包括LINQ.ListView控件.LinqDataSource.DataPag ...

  2. .NET Core 3.0之深入源码理解Startup的注册及运行

    开发.NET Core应用,直接映入眼帘的就是Startup类和Program类,它们是.NET Core应用程序的起点.通过使用Startup,可以配置化处理所有向应用程序所做的请求的管道,同时也可 ...

  3. vscode插件开发实践与demo源码

    vscode插件开发实践与demo源码 写在前面 工欲善其事必先利其器.vscode作为优秀的开发工具,给我的日常开发工作提供了极大的便利.其拓展机制更是如此. 但是,最近在做年度专业线任务时,有需要 ...

  4. python 自动化微信小程序_干货 | 微信小程序自动化测试最佳实践(附 Python 源码)...

    原标题:干货 | 微信小程序自动化测试最佳实践(附 Python 源码) 本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版. 随着微信小程序的功能和生态日益完善, ...

  5. Webrtc从理论到实践七: 官方demo源码走读(peerconnection_server)

    系列文章目录 Webrtc从理论到实践一:初识 Webrtc从理论到实践二: 架构 Webrtc从理论到实践三: 角色 Webrtc从理论到实践四: 通信 Webrtc从理论到实践五: 编译webrt ...

  6. 关于Asp.net core配置信息读取的源码分析梳理

    概述 我们都知道asp.net core配置信息的读取离不开IConfigurationSource和IConfigurationProvider这两个类,ConfigurationSource可以提 ...

  7. .NET Core 3.0之深入源码理解HealthCheck(一)

    写在前面 我们的系统可能因为正在部署.服务异常终止或者其他问题导致系统处于非健康状态,这个时候我们需要知道系统的健康状况,而健康检查可以帮助我们快速确定系统是否处于正常状态.一般情况下,我们会提供公开 ...

  8. .NET Core 3.0之深入源码理解Host(二)

    写在前面 停了近一个月的技术博客,随着正式脱离996的魔窟,接下来也正式恢复了.本文从源码角度进一步讨论.NET Core 3.0 中关于Host扩展的一些技术点,主要内容是关于创建Long Run ...

  9. .NET Core 3.0之深入源码理解Configuration(一)

    微软在.NET Core里设计出了全新的配置体系,并以非常灵活.可扩展的方式实现.从其源码来看,其运行机制大致是,根据其Source,创建一个Builder实例,并会向其添加Provider,在我们使 ...

最新文章

  1. 深度学习LiDAR定位:L3-Net
  2. R语言dplyr包的mutate函数将列添加到dataframe中或者修改现有的数据列:使用na_if()函数将0值替换为NA值、负收入替换为NA值
  3. 【原创】Github团队协作之Pull请求
  4. 卸料装置弹性零件的计算方法_机械零件加工变形的原因及其改进探究
  5. NR 5G MAC媒体接入控制
  6. 速领:1024大礼包
  7. linux 下基于jrtplib库的实时传送实现
  8. Leetcode--190. 颠倒二进制位
  9. 2016十大优秀jQuery插件推荐
  10. springmvc 全局编码_SpringMVC请求参数和响应结果全局加密和解密
  11. 大数据平台设计哲学的重构
  12. python多进程间通信
  13. Servlet乱码解决
  14. 【探索PowerShell 】【七】变量
  15. 镜像文件下载及VM部署win xp 保姆级教程
  16. windows 2012安装证书服务器,windows 2012 RADIUS服务器认证问题
  17. VBS病毒(爱虫病毒) 源代码
  18. 家里电线装多大的好?
  19. linux———/bin/sh、 /bin/bash、 /bin/dash的区别
  20. 如何浏览与下载全球免费的地图高分辨率(亚米级)的遥感影像?

热门文章

  1. LeetCode 366. Find Leaves of Binary Tree
  2. Docker学习笔记
  3. Netty1:初识Netty
  4. centos7下别名(alias)的特殊用法
  5. 前端进阶之路: 前端架构设计(2)-流程核心
  6. DataTable转成List集合
  7. keepalived 原理,安装,配置
  8. getch, getche, getchar 转
  9. OCFS2在Linux下配置文档
  10. 3G助推智慧医疗 看病将更加“智能化”