瘋狂創客圈 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) 訪問
(4) 視頻示意(具體視頻,請參見 博客園 總入口 )
具體,請關注 Java 高並發研習社群 【博客園 總入口 】
最后,介紹一下瘋狂創客圈:瘋狂創客圈,一個Java 高並發研習社群 【博客園 總入口 】
瘋狂創客圈,傾力推出:面試必備 + 面試必備 + 面試必備 的基礎原理+實戰 書籍 《Netty Zookeeper Redis 高並發實戰》
瘋狂創客圈 Java 死磕系列
- Java (Netty) 聊天程序【 億級流量】實戰 開源項目實戰
- Netty 源碼、原理、JAVA NIO 原理
- Java 面試題 一網打盡
- 瘋狂創客圈 【 博客園 總入口 】