consul

Spring RSocket:基于服务注册发现的 RSocket 负载均衡

怎甘沉沦 提交于 2021-02-19 17:07:19
作者 | 雷卷 来源| 阿里巴巴云原生公众号 RSocket 分布式通讯协议是 Spring Reactive 的核心内容,从 Spring Framework 5.2 开始,RSocket 已经是 Spring 的内置功能,Spring Boot 2.3 也添加了 spring-boot-starter-rsocket,简化了 RSocket 的服务编写和服务调用。RSocket 通讯的核心架构中包含两种模式,分别是 Broker 代理模式和服务直连通讯模式。 Broker 的通讯模式更灵活,如 Alibaba RSocket Broker,采用的是事件驱动模型架构。而目前更多的架构则是面向服务化设计,也就是我们常说的服务注册发现和服务直连通讯的模式,其中最知名的就是 Spring Cloud 技术栈,涉及到配置推送、服务注册发现、服务网关、断流保护等等。在面向服务化的分布式网络通讯中,如 REST API、gRPC 和 Alibaba Dubbo 等,都与 Spring Cloud 有很好地集成,用户基本不用关心服务注册发现和客户端负载均衡这些底层细节,就可以完成非常稳定的分布式网络通讯架构。 RSocket 作为通讯协议的后起之秀,核心是二进制异步化消息通讯,是否也能和 Spring Cloud 技术栈结合,实现服务注册发现、客户端负载均衡,从而更高效地实现面向服务的架构

为什么需要API网关?

为君一笑 提交于 2021-02-17 08:30:59
目录 0:00 微服务与网关(Microservices & API Gateways) 大家好,我叫Macro,今天我们谈论有关微服务和网关的话题。我是Mashape的CTO,也同时是开源网关Kong的开发者之一。Kong是一个API网关,今天我们就来窥探一下它究竟是怎么工作的以及它如何运用到你的微服务架构中去。 0:23 主题(Topics) 为了明白我们为什么需要API网关,我将从单体架构vs微服务架构谈起。这两个有什么不同点呢?然后我会介绍API网关模式以及它是如何适应“面向微服务”的架构的。然后我们会讨论Kong以及NGINX。 0:47 单体架构(Monolithic Architecture) Ok,过去几年我们目睹的一件事就是从单体应用到面向微服务的架构的过渡。我们都熟悉单体应用程序,以及它们通常的工作原理,这是一个简单的展示。我们把所有的东西都放到一块。而且通常也只有一个数据存储。 通过在多个服务器上重复部署相同的巨大代码块,可以横向扩展单体应用程序。所以每次我们调整应用程序时,我们其实相当于是在改动这些被放在一起的所有的模块,因为他们是一体的。 1:45 单体应用的优缺点(Monolithic Application Pros and Cons) 每一种做法,都有利弊。单体应用程序可以比较容易地构建,而且是以更小的代码库来开始

微服务Consul系列之服务部署、搭建、使用

狂风中的少年 提交于 2021-02-14 02:29:11
使用Consul解决了哪些问题: 是否在为不同环境来维护不同项目配置而发愁 是否有因为配置的更改,导致代码还要进行修改、发布,因为客流量大了还要规避开高峰期等到半夜来发布 微服务架构下,应用的分解,业务系统与服务系统之间的调用管理 以上只是列举的笔者曾经遇到的几点问题,当然问题还不止于这些,下面介绍的Consul可以有效解决这些问题,当然还有一些其它的优点,让我们一起期待下文的Consul的讲解。 Consul的四大核心特性: 服务发现: 可以方便的实现服务注册,通过DNS或者HTTP应用程序可以很容易的找到他所依赖的服务. Key/Value存储: 使用Key/Value进行数据存储。 多数据中心: Consul支持开箱即用的多数据中心。这意味着用户不需要担心建立额外的抽象层让业务扩展到多个区域 健康检查: 可以对指定服务进行健康检查例如,Response Status是否为200,避免将流量转发到不健康的服务上。 Consul架构 图片来自官网 Consul Architecture 上图很好的展示了Consul对于多数据中心的支持,另外在两个数据中心之间只有Service层可以相互通信。 Consul是一个分布式高可用的系统,一个发现和配置服务的工具。客户端可以利用它提供的API注册和发现服务,及监控检测功能实现服务的高可用,深入的架构描述具体细节,可以参考官网Consul

微服务Consul系列之集群搭建

旧街凉风 提交于 2021-02-13 23:43:32
在上一篇中讲解了Consul的安装、部署、基本的使用,使得大家有一个基本的了解,本节开始重点Consul集群搭建,官方推荐3~5台Server,因为在异常处理中,如果出现Leader挂了,只要有超过一半的Server还处于活跃状态,consul就会重新选举新的Leader,保证集群可以正常工作。 准备工作 测试用建议本地搭建几台虚拟机用于调试,这里的虚拟机分别为3台Server模式,1台Client模式,共以下4台: 192.168.6.128 Server模式(初始设置为Leader) 192.168.6.129 Server模式 192.168.6.130 Server模式 192.168.6.131 Client模式 下载相应平台版本的Consul解压copy至 /usr/local/bin/ (系统的环境变量)目录,这里以1.4.0版本为例,具体安装参照上篇-consul下载安装指南。 创建 /usr/src/consul 目录,存放Consul的启动配置文件 consul_config.json : { "datacenter" : "consul_cluster" , "node_name" : "consul_1" , "server" : true , "bootstrap_expect" : 3 , "data_dir" : "/usr/src/consul

Centos安装Consul微服务

巧了我就是萌 提交于 2021-02-13 22:51:38
一、简介 Consul([ˈkɒnsl],康搜)是注册中心,服务提供者、服务消费者等都要注册到Consul中,这样就可以实现服务提供者、服务消费者的隔离。除了Consul之外,还有Eureka、Zookeeper等类似软件。consul是存储服务名称与IP和端口对应关系的服务器 consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如 ZooKeeper 等)。服务部署简单,只有一个可运行的二进制的包。每个节点都需要运行agent,他有两种运行模式server和client。每个数据中心官方建议需要3或5个server节点以保证数据安全,同时保证server-leader的选举能够正确的进行。 @client CLIENT表示consul的client模式,就是客户端模式。是consul节点的一种模式,这种模式下,所有注册到当前节点的服务会被转发到SERVER,本身是不持久化这些信息。 @server SERVER表示consul的server模式,表明这个consul是个server,这种模式下,功能和CLIENT都一样,唯一不同的是,它会把所有的信息持久化的本地,这样遇到故障,信息是可以被保留的。 @server-leader

Docker

拟墨画扇 提交于 2021-02-12 03:43:57
原文: Docker - 容器部署 Consul 集群 目录 说明 简介 了解 Consul Consul 使用场景 Consul 优势 Consul 中的概念 安装 准备 Consul 镜像 安装单个 Consul 组装集群 Consul 总结 引用和附件 说明 本文主要介绍怎么使用 Docker 在 Linux 环境部署 Consul 集群,如果你对 Docker 不了解的同学,请先学习一下 Docker。推荐一本学习 Docker 在线书籍 : 【Docker入门到实践】 。 本文介绍 Consul 部署已经在准备好 Docker 环境好前提下开始的。 CentOS 7.3 Docker CE 18.09.2 简介 了解 Consul Consul 是一个支持多数据中心分布式高可用的 服务发现 和 配置共享 的服务软件,由 HashiCorp 公司用 Go 语言开发, 基于 Mozilla Public License 2.0 的协议进行开源。 Consul 支持 健康检查 ,并允许 HTTP 、 GRPC 和 DNS 协议调用 API 存储键值对. 命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品. 一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广播消息, 并且支持 ACL 访问控制.

Consul Agent Service Registrations on other nodes are not fetchable from Rest API but is showing on UI

梦想的初衷 提交于 2021-02-11 15:10:30
问题 We have a consul cluster of 3 servers and registering agent services on any of them via Rest Api. In UI, registrations of a server are visible on other servers as well. For e.g. registration on server A is visible on server B's UI (accessible by http://serverb:8500/). However when hitting server B via Rest Api, it only shows its own registrations and do not show server A registration. Server are started as Server A consul -server -ui bootstrap-expect=1 -node=ServerA -data-dir=D:\data -bind=11

centos 6.8 安装percona pmm(监控神器)

馋奶兔 提交于 2021-02-10 17:55:35
centos 6.8 安装percona pmm(监控神器) sql1101 关注 0人评论 15005人阅读 2018-12-07 13:47:59 背景: 完善的监控对系统的稳定性,运维,调优,故障定位都起着非常重要的作用,监控在整个运维体系中有着举着轻重的作用,所以有一个完善的监控平台非常重要,下面就要介绍一个percona的Pmm监控平台,非常强大,强大非常 一,安装pmm server yum -y install http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum install docker-io 1,查看docker 版本: 2,启动docker service docker start 3,创建Pmm 容器 docker create \ -v /opt/prometheus/data \ -v /opt/consul-data \ -v /var/lib/mysql \ -v /var/lib/grafana \ --name pmm-data \ percona/pmm-server:1.1.1 /bin/true 4,运行这个容器 docker run -d \ -p 80:80 \ --volumes-from pmm-data \ --name pmm

微服务架构之「 服务注册 」

早过忘川 提交于 2021-02-08 02:36:47
点击上方 “ 方志朋 ”, 选择“置顶或者星标” 你的关注意义重大! 微服务架构是一个庞大复杂的工程,为什么说它庞大复杂呢?因为想要做好微服务,就必须先要建设好微服务所需的一系列基础设施和组件。我在前面的文章 《架构设计之「 微服务入门 」》 中已经初步介绍过了这些组件,包括:服务注册、服务网关、配置中心、服务框架、服务监控、服务追踪、服务治理等。 只有将这些基础设施搭建完善了,微服务实践的道路才能走的稳、走的远。后面的文章中会依次把每一个基础组件都详细分析一下。今天我们就先挑选「 服务注册 」聊一聊。 一、为什么需要「 服务注册 」? 我们先来举一个生活中的例子:在以前互联网还不够发达的时候,“114号码百事通”大家应该很熟悉,有啥需求就会去打个电话查询一下。比如想知道附近电影院电话是多少,就会先去打114问一下。那114为啥知道这么多信息呢,还不是因为各类服务者(商店、机构等)都已经在114上登记了嘛。所以这里的“114百事通”就相当于一个服务注册中心了,这里的各类商店机构就相当于可以提供不同服务的服务者了,而打电话的我们就是去寻找这些服务的消费者了。 我们再来回到微服务架构中,一般集群都会部署很多个微服务节点。这些节点一般也具备这2种角色,称为:“服务的提供者” 和 “服务的消费者”。 “服务消费者”需要调用“服务提供者”的API来获得服务。当“服务提供者

Nomad and port mapping

旧城冷巷雨未停 提交于 2021-02-07 08:55:41
问题 Nomad has three different ways to map ports: Network stanza under group level Network stanza under config -> resources level port_map stanza under config level What is the difference and when I should use which? 回答1: First of all port_map is depricated, so you shouldn't be using that as part of task driver configuration. Up until Nomad 0.12, ports could be specified in a task's resource stanza and set using the docker port_map field. As more features have been added to the group network