SpringCloud集成使用(Greenwich.RELEASE版本--生产可用)——第一篇Eureka注册中心

一. 背景

最近基于SpringCloud+SpringSecurity+Auth2微服务改造项目终于上线,有心思和时间进行整理项目资料,废话不多说,直接上图

先来一张官方文档说明,可以看出微服务架构适应于物联网、移动端、浏览器,学习并使用微服务是很有必要的一件事。

 

下面这张图是我所在项目所构建的项目架构图

因为项目紧急,并未使用SpringCloud的配置中心,仅仅使用了SpringCloud的以下组件:
1.Feign声明式调用

2.Zuul路由转发

3.Zipkin调用分析

4.Eureka注册中心

5.Hystrix熔断

二.架构思路

其实本人也是第一次进行项目架构,属于赶鸭子上架那种,木办法,Not me who,Not now when !

谁不想拥有一个高可用、低耦合、易扩展的coding体系,但真正实操起来,才发现有多欠,暂时不表。

1.为了实现每个服务模块的低耦合,每个服务模块都有自己的依赖包xxx-share.jar

2.为了实现高可用,使每个模块都可独立部署并随时增加/删除服务节点xxx-server

感觉还是在说废话!!!

3.来点干货,项目中使用的技术栈由以下几部分:

(1)基于SpringSecurity+Auth2做的授权认证

(2)RocketMq的消息队列

(3)Redis集群缓存服务

(4)自定义线程池

(5)mybatis

(6)hikari数据库连接池

(7)lombok

据阿里P8大佬说,如果你能玩转Spring和redis基本上就足以应付目前所有的业务开发,不要问我为啥用上面的技术选型,大概也许这就是所谓的缘分吧。

三.实战

不能说太多概念上的东西,先玩起来再说,说太多概念性的东西容易让人厌烦。

1.eureka原理

eureka是为CS架构的注册中心,分为服务端server和客户端client.

(1). eureka-server的作用主要有以下几点

   eureka-server主要集中在提供服务注册和发现的功能,在服务治理方面不如dubbo做得好。它主要是通过维护两层缓存机制来维护注册表,通过注册和心跳机制来维护更新同步各个客户端的状态。

(2).eureka-client的作用有以下几点

    eureka-client通过和eureka-server进行注册、心跳通讯来完成服务注册和服务续约。默认30秒进行一次心跳来告知eureka-server哥们,我还活着。当90秒内eureka-server还没收到来自eureka-client的心跳就会把eureka-client给剔除掉。

2.注册中心-eureka-server

(1)eureka-server基础配置

#基础信息配置
server:
  port: 8080
spring:
  application:
    name: eureka-server
  security:
    user:
      name: admin
      password: admin123

#注册中心
eureka:
  instance:
    hostname: eureka-server
    #server收到下次心跳的超时时间,如果30秒还收不到,那你这个instance就拜拜,不和你玩了
    leaseExpirationDurationInSeconds: 30
    #client发送给server心跳的时间间隔
    leaseRenewalIntervalInSeconds: 10
    preferIpAddress: true
    ipAddress: ${spring.cloud.client.ip-address}
    instanceId: ${spring.cloud.client.ip-address}:${server.port}
  server:
    # 自我保护模式关闭
    enableSelfPreservation: false
    # 扫描失效服务的间隔时间
    eviction-interval-timer-in-ms: 30000
  client:
    #防止向自己注册
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${spring.cloud.client.ip-address}:${server.port}/eureka/

logging:
  level:
    org.springframework.security: DEBUG
  config: classpath:logback.xml

(2)注册中心访问保护

   注册中心服务访问的页面最好使用基础的认证,尽量保证安全。

   同时可以保证每个注册过来的服务都是我们自己想要注册的。

(3)官方eureka闭源了,无需担心,总会有解决方案

3.eureka-client注册服务

  (1)eureka-client其实就是一个独立的服务,配置如下:

#注册中心
eureka:
  client:
    serviceUrl:
      defaultZone: http://admin:admin123@localhost:8080/eureka/
  instance:
    preferIpAddress: true
    ipAddress: ${spring.cloud.client.ip-address}
    instanceId: ${spring.cloud.client.ip-address}:${server.port}

    (2)eureka-client服务的启动类上应加上@EnableEurekaClient

 

                                                实战代码,正在紧急从业务剥离中~~~~~~

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章