目录:

springcloud费话之Eureka基础

springcloud费话之Eureka集群

springcloud费话之Eureka服务访问(restTemplate)

springcloud费话之Eureka接口调用(feign)

springcloud费话之断路器(hystrix in feign)

springcloud费话之配置中心基础(SVN)

springcloud费话之配置中心客户端(SVN)

懂分布式的理论和做过分布式(多年前),却感觉在当下的面试对于springcloud要求太多

作为一个微服务分布式的架构,标准形成的太多又太快,很多东西不用去关心了,确实方便了一些,然而,并非所有公司都有类似的项目

或者说并非所有人都有相关的项目经验

多说无用,累

springcloud是什么?自己去找吧

一、Eureka是什么?咋用的,什么地位呢?

在一个分布式架构中,都会涉及到负载均衡和集群,最早出现的时候,我确定有10台机器作为集群,那么就知道这10台机器的ip和端口,于是乎

会将10台机器的ip和端口都写在需要调用的代码中,轮询使用,形成最早期的负载均衡了。

然而,当下来说,云服务和虚拟机比较普遍,又可以用docker进行容器化,细分割,服务微小化,解耦和独立运作性更强,同时还要兼顾集群的

横向扩容,于是,集群中一共有几台服务器,每台服务器的配置如何,就是一个变数,因此需要一个服务的注册和发现的中心了。

Eureka本意为:发现的惊叹感觉,的意思。当然是用的是springboot为基础,通讯协议是用的依然是http,对于其心跳机制来确定每一台服务器的

健康状况,这些我们不必在意,同时新的Eureka客户端会请求Eureka服务器,告诉对方自己来了,自动添加进集群,于是集群中就多了一员。

这种标准的服务发现和注册机制,形成的标准化结构,即为Eureka了。

二、Eureka的原理和作用

以下图为盗用,有意见联系我(我会重画一张一样的!!!)

一个Eureka集群,简单的分为Eureka服务器(Eureka Server)和Eureka客户端(Eureka Client)两个部分。

其中Eureka服务器通常为2台或者以上,最好进行物理分离,以达到整个集群容灾的效果。提高可用性,降低整体挂掉的可能性。

Eureka客户端,实际上就是应用,每个应用都写在客户端中,客户端数量为多个,那么每次请求的时候,只要知道客户端的名称,

即可以从Eureka服务器中或者该客户端的每个地址,选择一个进行调用,即完成了集群的请求。

那么具体要选择哪一个,为何很多示例代码中都是从该客户端数组List中只取(0)第一个来使用呢?

那只是示例代码,别太当真。如果该服务是需要集群中的一个服务器来解决,那么选择任意一个,都是可以的,第几个,可以用

随机数来计算得出。如果请求所有,可以理解为一种分布式了,比如10个客户端,每个去进行一个任务队列的十分之一,再将结果

整合回来统计,这东西和大数据的并发请求方式实际上就是一个东西了。

三、Eureka的上手

1、版本

首先找到spring的官网,找到Eureka的示例,在https://spring.io/projects中找到springcloud,然后在地步找到quick start,操作如图,

在下面展开的选项卡中找到Eureka server,如下图

然后点击 页面最下方的

得到内容如下图:

应用此信息修改pom,修改内容包括:parent,dependency,删掉junit,我经过修改后的pom如下:

只贴了server的pom,其中client的依赖也在其中,注意注释

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent> <groupId>com.lyh</groupId>
<artifactId>lyh-eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>lyh-eureka-server</name> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<!-- SR2会报错,未解决 -->
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties> <dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement> <dependencies>
<!-- web的jar -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- eureka server的jar, 作为client也需要 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!-- eureka client的jar -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

2.配置文件

创建resources并且buildpath,编写application.yml配置文件,如下:

server的yml

server:
port: 9010 eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ spring:
application:
name: eureka-server

client的yml

server:
port: 9020 eureka:
client:
serviceUrl:
defaultZone: http://localhost:9010/eureka/ spring:
application:
name: eureka-client

3.server和client的启动类

编写server的启动类,代码如下:

package com.lyh.lyh_eureka_server;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication
@EnableEurekaServer
public class EurekaServerRun { public static void main(String[] args) {
SpringApplication.run(EurekaServerRun.class, args);
} }

编写client的启动来,代码如下:

package com.lyh.lyh_eureka_server;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication
@EnableEurekaClient public class EurekaClientRun { public static void main(String[] args) {
SpringApplication.run(EurekaClientRun.class, args);
} }

4.启动并访问

先启动server,然后启动client,访问server的地址:http://localhost:9010,结果如下图则为正确:

 5.一些问题

client的name注册入server的时候,会自动转为大写

红字表示client的心跳维持时间在90秒以上,将会自动删除该注册,是一种server的保护机制

将server中的yml自我保护机制修改,配置文件修改如下:

server:
port: 9010 eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
server: 
enable-self-preservation: false spring:
application:
name: eureka-server

修改以后,页面提示会发生变化,表示保护机制已经关闭,如下图

以上!

springcloud费话之Eureka基础的更多相关文章

  1. springcloud费话之Eureka接口调用(feign)

    目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...

  2. springcloud费话之Eureka服务访问(restTemplate)

    目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...

  3. springcloud费话之Eureka集群

    目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...

  4. SpringCloud学习笔记-Eureka基础

    Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的微服务治理功能. 服务端 ...

  5. springcloud费话之配置中心基础(SVN)

    目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...

  6. springcloud费话之配置中心server修改

    目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...

  7. springcloud费话之配置中心客户端(SVN)

    目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...

  8. springcloud费话之断路器(hystrix in feign)

    目录: springcloud费话之Eureka基础 springcloud费话之Eureka集群 springcloud费话之Eureka服务访问(restTemplate) springcloud ...

  9. SpringCloud学习(3)——Eureka服务注册中心及服务发现

    Eureka概述: Eureka是Netflix的一个子模块, 也是核心模块之一.Eureka是一个基于REST的服务, 用于定位服务, 以实现云端中间层服务发现和故障转移.服务注册与发现对于微服务框 ...

随机推荐

  1. proc - 进程信息伪文件系统

    描述 /proc 是一个伪文件系统, 被用作内核数据结构的接口, 而不仅仅是解释说明 /dev/kmem. /proc里的大多数文件都是只读的, 但也可以通过写一些文件来改变内核变量. 下面对整个 / ...

  2. FTP客户端遇到150连接超时错误的处理办法

    环境:阿里云ECS,win server 2012 R2 / FTP Server(FileZilla 0.9.41) 问题描述:账号连接正常,但无法列出目录,提示150连接超时. 解决过程: 1.关 ...

  3. 268-基于FMC接口的DSP TMS320C6657子卡模块

    基于FMC接口的DSP TMS320C6657子卡模块 一. 概述         FMC连接器是一种高速多pin的互连器件,广泛应用于板卡对接的设备中,特别是在xilinx公司的所有开发板中都使用. ...

  4. 64-基于TMS320C6455、XC5VSX95T 的6U CPCI无线通信处理平台

    基于TMS320C6455.XC5VSX95T 的6U CPCI无线通信处理平台   1. 板卡概述 本板卡由我公司自主研发,基于CPCI架构,符合PICMG2.0 D3.0标准,包含双TI TMS3 ...

  5. 关于TVS、ESD、稳压二极管、压敏电阻

    一.稳压管和TVS管的工作原理 稳压二极管(又叫齐纳二极管),是一种直到临界反向击穿电压前都具有很高电阻的半导体器件,在这临界击穿点上,反向电阻降低到一个很小的数值,在这个低阻区中电流增加而电压则保持 ...

  6. Cent OS 7 VNC 安装

    关闭防火墙 关闭selinux 挂载光盘到本地 #yum install tigervnc-server -y #cp /lib/systemd/system/vncserver@.service / ...

  7. pwn的一些技巧与总结

    原文地址:https://github.com/Naetw/CTF-pwn-tips 目录 溢出 在gdb中寻找字符串 二进制服务 找到libc中特定函数的偏移地址 Find '/bin/sh' or ...

  8. 【串线篇】Mybatis缓存之缓存查询顺序

    1. 不会出现一级缓存和二级缓存中有同一个数据.因为二级缓存是在一级缓存关闭之后才有的 2.任何时候都是先看二级缓存.再看一级缓存,如果大家都没有就去查询数据库,数据库的查询后的结果放在一级缓存中了: ...

  9. 2、pycharm中设置pytest为默认运行

    1.打开File-setting 2.打开Tools-Python Integrated Tools 3.找到Default test runner选项,在下拉框中选择py.test 4.点Apply ...

  10. [BZOJ3625][Codeforces Round #250]小朋友和二叉树 多项式开根+求逆

    https://www.lydsy.com/JudgeOnline/problem.php?id=3625 愉快地列式子.设\(F[i]\)表示权值为\(i\) 的子树的方案数,\(A[i]\)为\( ...