Eureka 入門,帶視頻


瘋狂創客圈 Java 高並發【 億級流量聊天室實戰】實戰系列 【博客園總入口

架構師成長+面試必備之 高並發基礎書籍 【Netty Zookeeper Redis 高並發實戰


前言

Crazy-SpringCloud 微服務腳手架 &視頻介紹

Crazy-SpringCloud 微服務腳手架,是為 Java 微服務開發 入門者 准備的 學習和開發腳手架。並配有一系列的使用教程和視頻,大致如下:

高並發 環境搭建 圖文教程和演示視頻,陸續上線:

中間件 鏈接地址
Linux Redis 安裝(帶視頻) Linux Redis 安裝(帶視頻)
Linux Zookeeper 安裝(帶視頻) Linux Zookeeper 安裝, 帶視頻
Windows Redis 安裝(帶視頻) Windows Redis 安裝(帶視頻)
RabbitMQ 離線安裝(帶視頻) RabbitMQ 離線安裝(帶視頻)
ElasticSearch 安裝, 帶視頻 ElasticSearch 安裝, 帶視頻
Nacos 安裝(帶視頻) Nacos 安裝(帶視頻)

Crazy-SpringCloud 微服務腳手架 圖文教程和演示視頻,陸續上線:

組件 鏈接地址
Eureka Eureka 入門,帶視頻
SpringCloud Config springcloud Config 入門,帶視頻
spring security spring security 原理+實戰
Spring Session SpringSession 獨立使用
分布式 session 基礎 RedisSession (自定義)
重點: springcloud 開發腳手架 springcloud 開發腳手架
SpingSecurity + SpringSession 死磕 (寫作中) SpingSecurity + SpringSession 死磕

小視頻以及所需工具的百度網盤鏈接,請參見 瘋狂創客圈 高並發社群 博客

Eureka 簡介

Eureka 本身是 Netflix 開源的一款提供微服務注冊和發現的產品,並且提供了相應的 Java 封裝。選擇Eureka 的原因:

(1)Spring Cloud Netflix 背后強大的開源力量,在 Spring Cloud 的社區十分活躍;

(2)Eureka 在業界的應用也十分廣泛(尤其是國外),而且整個框架也經受住了 Netflix 嚴酷生產環境的考驗。

(3)除了服務注冊和發現,Spring Cloud Netflix 的其他功能也十分強大,包括 Ribbon,hystrix,Feign,Zuul 等組件,結合到一起,讓服務的調用、路由也變得異常容易。

那么,Netflix 和 Spring Cloud 是什么關系呢?

Netflix 是一家互聯網流媒體播放商,可以這么說該網站上的美劇應該是最火的。由於是美國視頻巨頭,訪問量非常的大,從而促使其技術快速的發展在背后支撐着,也正是如此,Netflix 開始把整體的系統往微服務上遷移。並且,幾年前,Netflix 就把它的幾乎整個微服務框架棧開源貢獻給了社區,叫做 Netflix OSS。

Spring 背后的 Pivotal 在 2015 年推出的 Spring Cloud 開源產品,主要對 Netflix 開源組件的進一步封裝,方便 Spring 開發人員構建微服務基礎框架。(雖然 Spring Cloud 到現在為止不只有 Netflix 提供的方案可以集成,還有很多方案,但 Netflix 是最成熟的。)

Spring Cloud Eureka 是 Spring Cloud Netflix 微服務套件的一部分,基於 Netflix Eureka 做了二次封裝,主要負責完成微服務架構中的服務治理功能,服務治理可以說是微服務架構中最為核心和基礎的模塊,他主要用來實現各個微服務實例的自動化注冊與發現。

基本概念

什么是服務注冊呢?

在服務治理框架中,通常都會構建一個注冊中心,每個服務單元向注冊中心登記自己提供的服務,將主機與端口號、版本號、通信協議等一些附加信息告知注冊中心,注冊中心按照服務名分類組織服務清單,服務注冊中心還需要以心跳的方式去監控清單中的服務是否可用,若不可用需要從服務清單中剔除,達到排除故障服務的效果。

什么是服務發現呢?

由於在服務治理框架下運行,服務間的調用不再通過指定具體的實例地址來實現,而是通過向服務名發起請求調用實現。

Eureka 所治理的每一個微服務,可以稱之為 provider instance (服務實例) 。為了便於理解,我們將每一個微服務實例,細分為 Service Provider 和 Service Consumer。

Service Provider:服務提供方,作為一個 Eureka Client,向 Eureka Server 做服務注冊、續約和下線等操作,注冊的主要數據包括服務名、機器 ip、端口號、域名等等。

Service Consumer:服務消費方,作為 Eureka Client,向 Eureka Server 獲取 Service Provider 的注冊信息,並通過遠程調用與 Service Provider 進行通信。

Eureka 管理的微服務集群中,節點之間是相互平等的,部分注冊中心的節點掛掉也不會對集群造成影響,即使集群只剩一個節點存活,也可以正常提供發現服務。哪怕是所有的服務注冊節點都掛了,Eureka Clients 上也會緩存服務調用的信息。這就保證了我們微服務之間的互相調用是足夠健壯的。

Eureka 負責微服務治理的組件,叫做 Eureka Server。Eureka Server是注冊服務中心的服務端,啟動完成是有界面的。

Eureka Server 服務器的啟動

新建 Eureka Server 項目的時候,需要在啟動類中添加注解@EnableEurekaServer,聲明這是一個Eureka Server。當然也需要在pom.xml文件中手動添加上如下依賴。

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

啟動類的代碼如下:

package com.crazymaker.springcloud.cloud.center.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
//在啟動類中添加注解@EnableEurekaServer
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

配置文件application.yml中內容為:

server:
  port: 7777
spring:
  application:
    name: eureka-server
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
    service-url:
      #服務注冊中心的配置內容,指定服務注冊中心的位置
      defaultZone: http://${EUREKA_ZONE_HOST:localhost}:${server.port}/eureka/
  instance:
    hostname: ${EUREKA_ZONE_HOST:localhost}
  server:
    enable-self-preservation: true
    eviction-interval-timer-in-ms: 10000

其中,eureka.client.register-with-eureka 表示是否將自己注冊到Eureka Server,默認為true。因為當前應用就是Eureka Server,所以需要設置成false。

eureka.client.fetch-registry 表示是否從Eureka Server獲取注冊信息,默認為true。因為本例是一個單點的Eureka Server,不需要同步其他Eureka Server節點數據,所以設置為false。

eureka.client. service-url. defaultZone 設置的是與Eureka Server的交互地址,查詢和注冊服務都依賴這個地址,如果有多個可以使用英文逗號分隔。

以上步驟完成后,直接啟動即可,然后瀏覽器地址欄輸入http://localhost:8080/7777 查看界面。但是不會看到任何微服務的實例,因為還沒有微服務注冊上。

部署和視頻

首先需要本地測試通過。

(1)打包:

maven 打包工具。

(2)部署:

部署到linux服務器,解壓縮,然后 start.sh 腳本啟動。

(3) 訪問

http://192.168.233.128:7777/

(4) 視頻示意(具體視頻,請參見 博客園 總入口

img

具體,請關注 Java 高並發研習社群博客園 總入口


最后,介紹一下瘋狂創客圈:瘋狂創客圈,一個Java 高並發研習社群博客園 總入口

瘋狂創客圈,傾力推出:面試必備 + 面試必備 + 面試必備 的基礎原理+實戰 書籍 《Netty Zookeeper Redis 高並發實戰

img


瘋狂創客圈 Java 死磕系列

  • Java (Netty) 聊天程序【 億級流量】實戰 開源項目實戰


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM