eureka

ZhaoWei-2020-02-04

不打扰是莪最后的温柔 提交于 2020-02-27 12:08:48
Spring Cloud Consul:服务治理与配置中心 摘要 Spring Cloud Consul 为 SpringBoot 应用提供了 Consul的支持,Consul既可以作为注册中心使用,也可以作为配置中心使用,本文将对其用法进行详细介绍。 Consul 简介 Consul是HashiCorp公司推出的开源软件,提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。 Spring Cloud Consul 具有如下特性: 支持服务治理:Consul作为注册中心时,微服务中的应用可以向Consul注册自己,并且可以从Consul获取其他应用信息; 支持客户端负责均衡:包括Ribbon和Spring Cloud LoadBalancer; 支持Zuul:当Zuul作为网关时,可以从Consul中注册和发现应用; 支持分布式配置管理:Consul作为配置中心时,使用键值对来存储配置信息; 支持控制总线:可以在整个微服务系统中通过 Control Bus 分发事件消息。 使用Consul作为注册中心 安装并运行Consul 首先我们从官网下载Consul,地址: www.consul.io/downloads.h… 下载完成后只有一个exe文件

SpringCloud 基础教程(十)-Zuul 服务网关

偶尔善良 提交于 2020-02-27 07:28:31
我的博客: 程序员笑笑生 ,欢迎浏览博客!,搜索博客可添加微信公众号。    上一章 SpringCloud 基础教程(九)-Hystrix服务监控(下) 当中,我们深入了解Hystrix的服务监控。实现了分布式环境下,监控多个服务的信息,本章节将探索微服务的另一个组件,网关。 前言  什么是Zuul,Zuul可以说是一个大门,所有的来自前端的请求,经过Zuul时,能够实现动态路由转发,监控、安全的等边缘服务应用程序。比如可以作为统一资源的访问入口、负载均衡等。为什么需要需要这样的一个组件呢?Netflix开发这样的产品是考虑到了以下的原因: api的多样性和访问量大能够导致很多的问题,无法预警 。所以我们需要这样的系统组件应付这些情况。 一、Zuul 提供的功能 身份认证和安全-可以识别访问资源的每一个请求,拒绝不满足的请求 洞察和监控,跟踪有意义的数据并统计,以便生成有意义的生产视图 动态路由,根据需要将请求动态的路由到不同的后端集群,(最主要的功能) 压力测试,逐渐增加集群的流量,评估性能 限流,为每一个请求分配容量,并丢弃超过限制的请求 处理静态响应,直接在边缘处构建响应,而不是转发给内部集群 二、Zuul 快速入门  新建Maven项目,引入Zuul的依赖和Eureka的依赖,我们转发请求是需要从Eureka中获取服务的信息

ZhaoWei-2020-02-07

守給你的承諾、 提交于 2020-02-27 06:41:38
ZUUL 在微服务架构中,需要几个关键的组件,服务注册与发现、服务消费、负载均衡、断路器、智能路由、配置管理等,由这几个组件可以组建一个简单的微服务架构,如下图: 注意:A服务和B服务是可以相互调用的,作图的时候忘记了。并且配置服务也是注册到服务注册中心的。 客户端的请求首先经过负载均衡(zuul、Ngnix),再到达服务网关(zuul集群),然后再到具体的服务,服务统一注册到高可用的服务注册中心集群,服务的所有的配置文件由配置服务管理(下一篇文章讲述),配置服务的配置文件放在git仓库,方便开发人员随时改配置。 一、Zuul简介 Zuul的主要功能是路由和过滤器。路由功能是微服务的一部分,比如/api/user映射到user服务,/api/shop映射到shop服务。zuul实现了负载均衡。 zuul有以下功能: Authentication Insights Stress Testing Canary Testing Dynamic Routing Service Migration Load Shedding Security Static Response handling Active/Active traffic management 二、准备工作 继续使用上一节的工程。在原有的工程上,创建一个新的工程。 三、创建service-zuul工程 其pom.xml文件如下:

微服务(微服务入门+eureka)

孤者浪人 提交于 2020-02-27 04:24:41
什么是微服务 大型系统架构中,会拆分多个子系统。简单来说,这些子系统有两个功能:提供接口、调用接口,在微服务架构中,将每一个这样的子系统称为一个“微服务”; 每一个服务会部署多个实例(就是多台机器,且会动态扩容,IP不固定); 这种情况下,需要使用eureka进行服务管理。服务ID/名称 是唯一的标识, 接口调用前,根据ID在注册中心找到对应的实例信息(ip端口等),然后再直调服务。 概念入门: CAP理论, C 数据的一致性 不是强一致 A 一定时间内一定有数据返回 error 提示信息 P 服务容错性 一个系统中,我们的服务允许某一块出错。不影响系统整体的运行。 Dubbo –cp Netflix – AP 完成微服务,我们需要做到: 高度的自治性.独立的开发,部署,发布 需要异构性。在协作的过程中,我们需要去思考不同服务最适合的技术(方案)。 弹性。容错性 扩展。 简化部署。 可组合性。 监控和日志。定位问题。 微服务不是万金油 微服务的特性 Springcloud的生态圈 搭建一个eureka Spring cloud 官网: https://spring.io/projects/spring-cloud https://springcloud.cc/ 项目创建地址: https://start.spring.io/ 1.新增eureka服务端(可配置多个实现高可用) 2

Spring Cloud Sleuth + ELK示例

我与影子孤独终老i 提交于 2020-02-27 02:41:59
目录 Eureka服务端 Spring Cloud服务端 Spring Cloud客户端 Elasticsearch Logstash Kibana Spring版本:5.1.8.RELEASE Spring Boot版本:2.1.6.RELEASE Spring Cloud版本:Greenwich.SR1 ELK版本:7.6.0 Eureka服务端 请参考 Spring Cloud服务发现之Eureka 中的Eureka Server Spring Cloud服务端 请参考 Spring Cloud服务发现之Eureka 中的Test Server Spring Cloud客户端 pom文件如下,添加了logback相关依赖以便使用其记录日志 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0<

Eureka简介

随声附和 提交于 2020-02-27 01:07:54
Eureka 简介: Eureka 是 Netflix 出品的用于实现服务注册和发现的工具。 Spring Cloud 集成了 Eureka,并提供了开箱即用的支持。其中, Eureka 又可细分为 Eureka Server 和 Eureka Client。 1.基本原理 - 处于不同节点的eureka通过Replicate进行数据同步 - Application Service为服务提供者 - Application Client为服务消费者 - Make Remote Call完成一次服务调用 服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。 当服务注册中心Eureka Server检测到服务提供者因为宕机、网络原因不可用时,则在服务注册中心将服务置为 DOWN 状态,并把当前服务提供者状态向订阅者发布,订阅过的服务消费者更新本地缓存。 服务提供者在启动后,周期性(默认30秒)向Eureka Server发送心跳,以证明当前服务是可用状态。Eureka Server在一定的时间(默认90秒)未收到客户端的心跳,则认为服务宕机,注销该实例。 2

面试系列-Spring Cloud 的核心架构原理

无人久伴 提交于 2020-02-26 23:41:01
最近在补一些分布式系列的面试内容,提前做做准备吧,你们懂的,也跟大家分享分享。现在分布式系统基本上都是标配了,如果你现在还在玩儿单机,没有接触过这些东西的话,权当是为你打开一扇新的大门吧。 大的单体项目有多蛋疼 以前我们做单机系统的时候,所有的代码都在一个项目里面,只是不同的模块按照包名来划分的。我们以前做的一个某省的教育项目,有学生信息和就业系统、有高校培训系统、有一个人资系统等一共六个,4个小伙伴都在一个代码里面进行开发,各个系统之间有一定的联系,但是大部分是不相关的,但管理页面在一起。 那时候我们都在一个项目里面码代码,每次启动好几分钟,还有就是包版本冲突问题,搞得真是蛋疼。大家经历过大型的单体项目开发,相信你有体会的。 还有各系统的使用量也不一样,有的比较大。比如学生信息和就业系统,面向的是所有高校,特别是快毕业那段时间,每个学校会上报就业率等信息,还有就是打印报到证呀什么的。有的系统就使用比较少,比如人资、培训系统 使用的基本上就教育厅的一些员工,和部分老师,流量不大,勉强能扛得住。 模拟业务背景 大点的企业,比如做电商的,用户几十万的,日活几万的,背后好几十人上百人的团队在支撑开发,单体系统就不太合适了。 比如现在有一个下单买东西的需求,就需要订单系统、库存系统、仓库系统和积分系统 等来进行处理。如下图: 订单系统、库存系统、仓储和积分系统都是部署到不同的机器上的。

SpringCloud 基础教程(九)-Hystrix服务监控(下)

拟墨画扇 提交于 2020-02-26 18:58:30
  我的博客: 程序员笑笑生 ,欢迎浏览博客!  上一章 SpringCloud基础教程(八)-Hystrix熔断器(上) 当中,我们介绍了Hystrix在分布式环境下,如何通过熔断、降级的方式解决了服务延迟或者故障出现的问题,本章我们将深入了解Hystrix的服务监控。 前言  当服务端因为网络延迟或故障出险问题时,我们可以通过Hystrix实现服务熔断,那么如何做到迅速的发现问题并且迅速的解决问题呢?熔断的监控工具有2款工具:Hystrix-dashboard和Turbine,Hystrix-dashboard是针对Hystrix进行实时的监控工具,通过Hystrix-dashboard我们可以直观的看到单个应用的服务信息。但是,在分布式的模式下,我们需要一个能够汇总所有的服务数据并直观的显示出来,这个工具就是Turbine。 一、健康检查  我们在 SpringCloud 基础教程(三)-Eureka 进阶 中提到了 Eureka是默认使用心跳机制来监测服务的健康与否的,我们通过在服务端引入actuator依赖,并修改yml配置,开启健康检查,能够查到服务是否正常,这里在需要被监测的服务组件中,开启监控也需要引入actuator: <dependency> <groupId>org.springframework.boot</groupId> <artifactId

SpringCloud 基础教程(七)-Feign声明式服务调用

纵饮孤独 提交于 2020-02-26 17:13:08
  我的博客: 程序员笑笑生 ,欢迎浏览博客!  上一章 SpringCloud基础教程(六)-负载均衡Ribbon 当中,我们介绍了Ribbon在微服务中是如何做到负载均衡的,本期我们将在此基础上使用Fegin更加简化的实现服务间的调用。 前言  什么是Fegin,在解释之前,我们先梳理一下我们之前学习到的,在微服模式下,解决服务间的调用可以通过Grpc、HttpClient、(Spring中的resttemplate是对HttpClient的封装)等开源框架,这种调用我们称之为远程过程的调用,即RPC,那么进行RPC调用需要解决几个重要的问题,一个是序列化/反序列化,比如Json/xml等怎样序列化和反序列化等,再一个就是以什么样的协议实现这样的调用。这两个问题在开源社区都有了很好的技术方案。那么Spring Cloud Fegin主要是为了更简单的实现开发,封装了Http的调用流程,更适合面向接口化编程的习惯。我们虽然能通过Ribbon和RestTemplate通过URL进行远程调用,但是这样拼接参数,并不是特别的优雅,为此,我们可以通过使用Feign让远程调用变的更简洁。 一、快速使用Feign  我们在上几章的服务调用方server-consumer示例的pom文件中添加Feign的依赖 (我使用的spring Cloud版本是Greenwich.SR3版本

SEATA 分布式事务入门DEMO

妖精的绣舞 提交于 2020-02-26 16:30:54
> Simple Extensible Autonomous Transacation Architecture, seata 是简单的、可扩展、自主性高的分布式架构 SEATA Server Configure > 因我们使用正式的1.0.0-GA 版本,网上大多数找到的说明都是0.X版本,有不少变动,比如,在server中取消了db_store.sql的脚本,如找不到相关内容,可以通过源码来查找,比如db脚本源码: mysql db script 下载 seata-server 创建数据库( seata ),可自定义,在 file.conf 中要用到。 -- -------------------------------- The script used when storeMode is 'db' -------------------------------- -- the table to store GlobalSession data CREATE TABLE IF NOT EXISTS `global_table` ( `xid` VARCHAR(128) NOT NULL, `transaction_id` BIGINT, `status` TINYINT NOT NULL, `application_id` VARCHAR(32), `transaction