从零搭建微服务(Springboot + SpringCloud)

初始化工程

可以直接用IDEA的SpringInitialize,也可以在Spring的官网上来初始化项目,右边是需要用到的组件依赖,主要有注册中心Eureka的客户端和服务端,网关zuul,熔断器Hystrix,服务监控仪表盘HystrixDashbord,负载均衡Ribbon等
在这里插入图片描述

注册中心Eureka

在单体应用的时候,不同系统之间的交互无论是通过Webservice、Http还是ESB等都是用固定IP的方式来进行请求,那么就存在一个问题,当服务器的地址进行变更或者新增服务器做集群部署的时候,既要修改请求方代码中的IP地址,又需要去修改被调用方nginx的配置来完成负载均衡,这是相当麻烦的过程。注册中心的作用就是帮我们来管理这些服务,以及当服务集群中某个节点宕机了,会自动切换到其他存活的节点。

我用过的注册中心有两种,一种是Zookeeper一种是Eureka,这两者有什么区别呢?

Zookeeper是通过临时节点的方式来完成注册,当服务A在Zookeeper上注册后,会在内存中生成一个临时节点,服务B会对这个节点进行监听
在这里插入图片描述
当服务A下线了,临时节点会消失。Zookeeper会自动通知到服务B,服务A已经下线了,服务B就不会将服务A的信息保存在本地的服务列表中了。面试官很喜欢问的一个问题是,当Zookeeper挂掉了,会影响服务A访问服务B吗?答案是不会的,因为服务B已经将服务A的信息存在了本地列表上,只有当服务A下线了,Zookeeper才会通知服务B将服务A的信息进行删除。

Eureka是拉取式,连接到Eureka的服务,在默认配置下每30秒到Eureka上拉取注册在Eureka上的服务信息。Eureka服务端的多级缓存和客户端增量的拉取机制都是在优化服务的注册和服务信息同步的性能和效率。
在这里插入图片描述
在注册中心领域来说,Eureka显然是更好的选择。原因如下,先说一下CAP是什么,
Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。通过上面的介绍,可以看出Zookeeper是CP,Eureka是AP。Zookeeper当某个节点挂点后,会直接导致不可用,这个在生产上是很可怕的事情。Eureka因为有多级缓存的存在,保证了高可用,并且通过多级缓存的同步来保证了服务信息的最终一致性。

接下来我们用Eureka来搭建一个注册中心

在根目录右键New Module后,将最外层POM文件里面的Eureka服务端的依赖复制到新建的Eureka工程中的POM文件来。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200423180844610.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc3Njc0MQ==,size_16,color_FFFFFF,t_70
接着在启动类上添加@EnableEurekaServer注解,开启Eureka服务端的功能
在这里插入图片描述
接下来就是最重要的配置文件了

#服务端口号
server:
  port: 8081

spring:
  application:
    # 服务的名称及在Eureka可视化界面上的服务名
    name: eureka8001
eureka:
  instance:
    # 当鼠标移到服务列表时,是否在左下角显示该服务的IP
    prefer-ip-address: true
    # 注册到Eureka的IP地址
    hostname: 127.0.0.1
  client:
    # Eureka是否要去其他实例中拉取注册列表信息,单点部署的时候为false,集群部署的时候必须为true
    fetch-registry: false
    # 是否将此服务注册到注册中心上
    register-with-eureka: false
    serviceUrl:
       defaultZone: http://localhost:8001/eureka

这些是最基本的一些配置,后面再说Eureka里面可以优化的配置内容。为了演示服务是否可以注册到Eureka上,我这边将Eureka的服务端的register-with-eureka改为true,然后通过http://localhost:8001进行访问。可以看到相关的配置都已经生效了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200423181835783.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzc3Njc0MQ==,size_16,color_FFFFFF,t_70
最后说一下Eureka有哪些配置,以及如何优化。
首先我们可以在Eureka服务端jar包里面,找到EurekaServerConfigBean这个类,这里面就是Eureka服务端可以用的配置,以及部分配置的默认值了。
在这里插入图片描述
我们可以根据具体的业务场景来进行参数的优化。比如,项目的服务比较少,我要提高服务信息的准确性和一致性&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值