SpringCloud:(一) 服務治理 Spring Cloud Eureka
阿新 • • 發佈:2019-02-02
服務治理
服務治理是微服務架構中最為核心和基礎的模組,主要用來實現各個微服務例項的自動話註冊和發現。
搭建服務註冊中
首先,建立一個基礎SpringBoot工程,命名為lemon-eurkea(命名自己隨意),並在pom.xml中引入需要的依賴內容,程式碼如下:
<parent> <groupId>com.lemon</groupId> <artifactId>lemon</artifactId> <version>0.0.1</version> </parent> <artifactId>lemon-eureka</artifactId> <packaging>jar</packaging> <description>springcloud註冊中心</description> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
這裡我是依賴了一個父工程,父工程的pom配置為:
<!-- Spring Boot 啟動父依賴 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.4.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <lemon-version>0.0.1</lemon-version> <springboot.version>1.5.2.RELEASE</springboot.version> <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version> <druid.version>1.0.26</druid.version> <fastjson.version>1.2.24</fastjson.version> <pagehelper.spring.boot.version>1.2.0</pagehelper.spring.boot.version> <joda.time.version>2.9.9</joda.time.version> <shiro.version>1.3.2</shiro.version> <jsch.version>0.1.54</jsch.version> </properties> <dependencies> <!-- Spring Boot Web 依賴 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- Springboot 熱部署 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version> </dependency> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR4</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.spring.boot.version}</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>${pagehelper.spring.boot.version}</version> </dependency> <!-- druid阿里巴巴資料庫連線池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>${shiro.version}</version> </dependency> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>${shiro.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/com.jcraft/jsch --> <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>${jsch.version}</version> </dependency> </dependencies> </dependencyManagement>
剩下的例子也會在現在的工程基礎上進行新增,所有的例子可以在github中檢視,點選這裡。
通過@EnableEurekaServer
註解啟動一個服務註冊中心提供給其他應用進行對話。
@EnableEurekaServer @SpringBootApplication public class EurekaApplication { public static void main(String[] args) { new SpringApplicationBuilder(EurekaApplication.class) .web(true).run(args); } }
在預設設定下,該服務註冊中心也會將自己作為客戶端來嘗試註冊它自己,所以我們需要禁用它的客戶端註冊行為,只需要在application.properties
配置檔案中增加如下資訊:
spring.application.name=lemon-eureka
server.port=1001
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.register-with-eureka:由於應用為註冊中心,因此設定為false,代表不向註冊中心註冊自己。
eureka.client.fetch-registry: 由於註冊中心的職責就是維護服務例項,他並需要去檢索服務,所以設定為false。
簡單的註冊中心完成了,啟動應用並訪問http://localhost:1001/,可以看到如下圖所示的Eureka的資訊面板