consul

实测go-micro入门demo

会有一股神秘感。 提交于 2020-08-10 08:01:32
1、启动consul 使用一下命令启动consul agent。 consul agent -dev -client 0.0.0.0 注意,一定要加-client 0.0.0.0,否则其他机器是无法访问consul的。 2、创建一个服务(math_service) main.go package main import ( "fmt" "github.com/gin-gonic/gin" "github.com/micro/go-micro/v2/registry" "github.com/micro/go-micro/v2/web" "github.com/micro/go-plugins/registry/consul/v2" "strconv" ) var reg registry.Registry func init() { reg = consul.NewRegistry(registry.Addrs("127.0.0.1:8500")) } func InitWeb() *gin.Engine { r := gin.Default() r.GET("/math/add", func(c *gin.Context) { x, _ := strconv.Atoi(c.Query("x")) y, _ := strconv.Atoi(c.Query("y")) z := x

基于SpringCloud分布式架构

一曲冷凌霜 提交于 2020-08-10 02:43:24
基于SpringCloud分布式架构 为什么要使用分布式架构 Spring Cloud 专注于提供良好的开箱即用经验的典型用例和可扩展性机制覆盖 分布式/版本化配置 服务注册和发现 路由 Service-to-Service 调用 负载均衡 断路器 分布式消息传递 这是分布式的优点,这样看起来可能比较抽象,举个例子来说,对于单体服务来说,如果我想更新订单中的某个功能,我是不是需要重启整个服务。 这个时候就会导致整个项目都处于不可用状态,或者在处理订单的时候由于程序代码写的有问题,导致死锁了,这个时候也会导致整个服务处于宕机专改,容错率很差。 但是分布式不同,如上图所示,订单服务、售后服务、用户服务都是独立的服务,如果需要更新订单服务或者订单服务发生死锁,受影响的只会是订单服务,售后服务与用户服务还是可以正常工作的,这就是分布式相对单体来说最大的优势之一。 分布式基础组件 Spring Cloud Config:配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git 以及 Subversion。 Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与 Spring Cloud Config 联合实现热部署。 Eureka:云端服务发现,一个基于 REST 的服务,用于定位服务

基于Docker Compose的.NET Core微服务持续发布

纵饮孤独 提交于 2020-08-10 01:54:23
是不是现在每个团队都需要上K8s才够潮流,不用K8s是不是就落伍了。今天,我就通过这篇文章来回答一下。 一、先给出我的看法和建议 我想说的是,对于很多的微小团队来说,可能都不是一定要上K8s,毕竟上K8s也是需要成本和人力的。对像我司一样的传统企业做数字化转型的信息团队来讲,人数不多,没有专门的Ops人员,领导又想要尽快迭代支持公司业务发展,而且关键还要节省成本(内心想法是: WTF )。 在此之下,信息团队需要综合引入先进技术带来的价值以及需要承担的成本和风险。任何架构的产生,都会解决一定的问题,但是同样也会引入新的复杂度,正如微服务架构风格,看着香实际吃着才知道需要承受很多的“苦”(比如数据一致性又比如服务的治理等等)。 因此,结合考虑下来,我的建议是 开发测试环境使用Docker Compose进行容器编排即可,而UAT或生产环境则建议使用云厂商的K8s服务(比如阿里云ACK服务)而不选择自建K8s集群 。 那么,今天就跟大家介绍一下如何使用Docker Compose这个轻量级的编排工具实现.NET Core微服务的持续发布。 二、Docker Compose Docker主要用来运行单容器应用,而Docker Compose则是一个用来定义和应用多容器应用的工具,如下图所示: 使用Docker Compose,我们可以将多容器的定义和部署方式定义在一个yml文件中

consul安装

橙三吉。 提交于 2020-08-09 12:29:25
一、环境 操作系统版本:centos7.2 操作系统内核:4.8.4 系统工具:yum 数据分区(200G容量以上):/data 启用端口:8300、8301、8302、8500、8600 二、下载安装文件 下载安装文件:wget https://releases.hashicorp.com/consul/0.9.2/consul_0.9.2_linux_amd64.zip 三、解压安装文件 unzip consul_0.9.2_linux_amd64.zip -d /usr/bin 四、创建启动文件 编辑文件: vim /lib/systemd/system/consul.service #####以下为文件内容###### [Unit] Description=consul [Service] ExecStart=/usr/bin/consul agent -config-dir /etc/consul KillSignal=SIGINT 五、创建配置文件 创建文件存放路径: mkdir /etc/consul/ 编辑文件: vim /etc/consul/server.json #####以下为server端文件内容,请注意中文说明部分需要修改###### { "datacenter": "数据中心名称", "data_dir": "/tmp/consul", "log

NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成

半世苍凉 提交于 2020-08-09 12:24:23
本篇内容属于非实用性(拿来即用)介绍,如对框架设计没兴趣的朋友,请略过。 快一个月没有写博文了,最近忙着两件事; 一:阅读刘墉先生的《说话的魅力》,以一种微妙的,你我大家都会经常遇见的事物,来建议说话的“艺术和魅力”,对于我们从事软件开发、不太善于沟通和表达的朋友来说,也算是一项软技能了,推荐喜欢阅读的朋友有时间阅读,给你不一样的阅读体验。 二:编写基于Net Core的Rpc框架。之前有朋友说如何将Rpc等整个体系集成到dotnet框架中,我想这篇博文会给你一个答案。 哦,对了,我不建议直接将代码直接复制下来然后去运行的朋友,因为这样你达不到学习的目的,也违背了笔者的初衷。谢谢理解。 一:简单回顾一下之前的介绍 继续贴上之前的一张图片 根据上面图,服务化原理可以分为3步: 服务端启动并且向注册中心发送服务信息,注册中心收到后会定时监控服务状态(常见心跳检测); 客户端需要开始调用服务的时候,首先去注册中心获取服务信息; 客户端创建远程调用连接,连接后服务端返回处理信息;   第3步又可以细分,下面说说远程过程调用的原理: 目标:客户端怎么调用远程机器上的公开方法 服务发现,向注册中心获取服务(这里需要做的有很多:拿到多个服务时需要做负载均衡,同机房过滤、版本过滤、服务路由过滤、统一网关等); 客户端发起调用,将需要调用的服务、方法、参数进行组装; 序列化编码组装的消息

Spring Cloud: API网关 Gateway

六眼飞鱼酱① 提交于 2020-08-09 11:12:40
网关的作用 在微服务架构下,单体应用被分割成多个微服务,如果将所有的微服务直接对外暴露,会出现一些安全问题,全部做鉴权处理的话,不光效率底下,而且管理起来更是复杂,而且有一些服务协议不是Web友好的协议。 为了解决上述问题,出现了使用API网管的解决方案。API网关自身也是一个服务,并且是后端服务的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。除此之外,它还可以负责身份验证、监控、负载均衡、限流、降级与应用检测等功能。 Spring Cloud Gateway 简介 Spring Cloud Gateway是Spring官方基于Spring 5.0、Spring Boot 2.0和ProjectReactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供简单、有效且统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关 Spring Cloud Gateway依赖Spring Boot和Spring WebFlux,基于Netty运行。它不能在传统的servlet容器中工作,也不能构建成war包。 Gateway中最重要的几个概念: 路由(route):路由是网关最基础的部分,路由信息由一个ID、一个目的url

ubuntu18 Docker 安装 consul

大城市里の小女人 提交于 2020-08-09 03:00:31
0. 访问hub.docker.com 主要是获得安装软件的信息及文档 查看需要的版本 1. docker search 软件名称 2. docker pull 软件名:版本号 docker pull consul:1.6.1 3. docker run 主要是通过hub.docker.com提供的文档设置 docker run --name consul0 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul:1.6.1 agent -server -bootstrap-expect=1 -ui -bind=0.0.0.0 -client=0.0.0.0 4.docker ps -a # 查看docker的运行状态 5.通过第三方软件连接软件 使用浏览器访问:http:ip:8500 来源: oschina 链接: https://my.oschina.net/u/2255699/blog/4314932

你应该了解的Nacos注册中心

自古美人都是妖i 提交于 2020-08-08 09:56:16
背景 前段时间有新闻报道,国外HashiCorp在官网宣布:不允许中国境内使用、部署和安装该企业旗下的企业版产品和软件。 其中Consul是Java的spring cloud开发者非常熟悉的一个服务发现和配置中心的中间件,很多人担心是否Consul会受到影响,目前来看HashiCorp只是对商业版进行了禁止使用,还没有对开源版本进行限制,所以使用Consul的小伙伴不用担心。但是随着时间的发展,不同地区的对抗会不断的升级,说不定有一天开源的版本会被也会被宣布禁用,所以我们需要知道如何去替代Consul。 在2008年的时候,那个时候zk还没出来,阿里巴巴当时内部需要做服务发现,于是自研了ConfigServer,过了十年,在2018年7月的时候,阿里发布了Nacos(ConfigServer开源实现)0.1.0版本,到现在快两年了已经到了1.3.0版本,现在已经可以支持很多功能了: 服务注册和发现:nacos和很多rpc框架已经做了集成,比如dubbo,SpringCloud等,方便我们拿来即用,同时也开放了比较简易的api方便我们对自己的rpc进行定制。 配置管理:类似apllo的一个配置管理中心,让我们不用把配置写在文件中了,在后台进行统一的管理。 地址服务器: 方便我们对不同环境不同隔离场景的nacos进行寻址。 安全与稳定性: 性能监控,加密传输,权限控制管理等等。

微服务技术栈:常见注册中心组件,对比分析

偶尔善良 提交于 2020-08-08 09:41:27
本文源码: GitHub·点这里 || GitEE·点这里 一、注册中心简介 1、基础概念 在分布式架构的系统中注册中心这个概念就已经被提出了,最经典的就是Zookeeper中间件。 微服务架构中,注册中心是最核心的基础服务之一,注册中心可以看做是微服务架构中的通信中心,当一个服务去请求另一个服务时,通过注册中心可以获取该服务的状态,地址等核心信息。 服务注册主要关系到三大角色:服务提供者、服务消费者、注册中心。 2、流程和原理 基础流程 服务启动时,将自身的网络地址等信息注册到注册中心,注册中心记录服务注册数据。 服务消费者从注册中心获取服务提供者的地址,并通过地址和基于特定的方式调用服务提供者的接口。 各个服务与注册中心使用一定机制通信。如果注册中心与服务长时间无法通信,就会注销该实例,这也称为服务下线,当服务重新连接之后,会基于一定的策略在线上线。 服务地址相关信息发生变化时,会重新注册到注册中心。这样,服务消费者就无需手工维护提供者的相关配置。 核心功能 通过上面的基本流程,不难发现一个注册中心需要具备哪些核心功能: 服务发现 服务发现是指服务在启动后,注册到注册中心,服务方提供自身的元数据,比如IP地址、端口、运行状况指标的Uri 、主页地址等信息。 服务记录 记录注册中心的服务的信息,例如服务名称、IP地址、端口等。服务消费方基于查询获取可用的服务实例列表。

Consul 启动命令,Web UI

柔情痞子 提交于 2020-08-08 04:24:04
一、服务端: nohup consul agent -server -bootstrap-expect 1 -config-dir /etc/consul.d/ -data-dir /var/opt/consul -bind=125.72.214.83 >> /var/opt/consul/consul.log 2>&1 注册服务: curl -X PUT -d '{"type":"localService","outPort":8085,"outPath":"/websocket", "forwardAddress":"125.72.2·4.83", "forwardPort":"8085"}' http: // localhost:8500/v1/kv/websocket/my webui添加: http://localhost:8500/ui -client 0.0.0.0 -ui 二、客户端: nohup consul agent -config-dir /etc/consul.d/ -data-dir /var/opt/consul -bind=121.42.204.73 -join=121.42.204.73 >consul.log 2>&1 & 1. 配置生效顺序 : 命令行>环境变量>配置文件 2. 重加载 : SIGHUP信号触发。 3. 命令行配置 :