SpringCloud简介
微服务
对一整套运行的微服务集群进行管理
微服务框架
springcloud
一种轻量级的框架技术,服务管理中心组件只能是eureka;基于http的协议的,是服务治理组件
dubbo
阿里开源的一种高性能的优秀微服务框架,基于rpc协议的,所以性能比http协议高一些
dubbo支持微服务现成组件没有springcloud丰富
springcloud组件
eureka
springcloud中核心组件,治理服务用的(管理者)
Ribbon
服务提供者中,作为调用端可以使用的集中组件技术
由以上2个组件就能形成最基本的微服务框架的结构
Zuul网关
每个微服务是不能被外界直接访问的,需要通过整个集群的唯一入口访问集群的每一个服务,控制访问路由,或过滤
config配置
每个服务公用配置文件 log4j.xml,application.properties等等都可用有config组件维护,公用
hystrix
服务熔断组件;解决服务调用中由于某个服务的故障导致整个微服务集群的瘫痪
feign
和ribbon是一样的,唯一的区别是使用方式.利用注解声明式的使用(开发起来方便),封装调用公用服务的客户端
eureka介绍
服务注册中心
管理当前微服务集群中的所谓服务
通过注册和发现的方式来管理
所有被拆分的微服务都会提供一个服务名称注册在注册中心,方便后期维护和使用
服务的提供者
拆分后的每一个独立运行的系统
根据配置指定到某一个/ 某几个注册中心,实现服务的注册
服务调用者
服务调用者可以是外界
可以是zuul网关
可以是ribbon的一个进程系统
通过在服务注册中心获取后端服务实例,决定访问哪些服务
eureka注册中心
pom.xml
parent继承
dependencyManagement
将springcloud的大量依赖声明的资源导入当前工程
dependency 中的 artifactId
spring-cloud-starter-eureka-server
与客户端有所区别
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.wiscom</groupId> <artifactId>eureka-server01</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <name>eureka-server01</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <!-- 配置为eureka的服务器端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> </dependencies> <!-- 导入springcloud的依赖声明 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Edgware.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>
src/main/resourses
application.properties
eureka.instance.hostname
配置eureka服务端的访问域名
eureka.instance.PreferipAddress
优先使用ip作为通信的访问地址
eureka.client.registerWithEureka
service是否也要作为客户端进行注册
eureka.client.fetchRegistry
server作为客户端在自己的抓取服务
eureka.client.serviceUrl.defaultZone=http://localhost:8888/eureka
eureka注册中心的访问地址接口,别的地址请求注册的地址
eureka.server.enable-self-preservation
是否开启自我保护机制
server.port=8888
#Eureka
eureka.instance.hostname=localhost
eureka.instance.PreferipAddress=true
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false
eureka.client.serviceUrl.defaultZone=http://localhost:8888/eureka
eureka.server.enable-self-preservation=false
src/main/java
StarterEurekaServer.java
package com.wiscom; @SpringBootApplication //启动eureka注册中心的进程 @EnableEurekaServer public class StarterEurekaServer { public static void main(String[] args) { SpringApplication.run(StarterEurekaServer.class, args); } }
eureka的客户端
pom.xml
parent继承
dependencyManagement
将springcloud的大量依赖声明的资源导入当前工程
dependency 中的 artifactId
spring-cloud-starter-eureka
与服务端有所区别
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.wiscom</groupId> <artifactId>eureka-server01</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <name>eureka-server01</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Edgware.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> </project>