什么是SpringCloud?
大家都知道SpringCloud是一种微服务架构(模式)
SpringCloud简单来说就是微服务架构技术落地实现的集合体,是微服务架构下的一站式解决方案
说人话的话就是:
可以很高的提高在项目开发中的性能
什么是微服务(能干什么)?
单体架构
单体架构:
优点:
- 易上手
- 开发快
- 成本低
- 性能低
缺点:
- 一个地方出错导致全部运行出错down机
- 部署简单
- 存在并发问题
微服务架构:
优点:
- 将复杂的业务拆分成多个业务,每个业务是一个独立的微服务,彻底的去耦合,利于分工,当需要增加业务的时候,可以方便创建新的微服务扩展业务,而不用担心有没有别的地方耦合
- 每个微服务之间可以使用不同的编程语言和不同的数据库
- 高性能,一个地方down机其他服务可以运行
缺点:
- 微服务比单体建构要更为复杂些,搭建起来比较麻烦
- 成本高
为什么要用SpringCloud?
SpringCloud简单来说就是微服务架构技术落地实现的集合体,是微服务架构下的一站式解决方案
组件很多如下:
- 注册中心——Netflix Eureka
- 消息队列——Netflix Ribbon(MQ)|负载均衡
- 断路器——Netflix Hystrix
- 服务网关——Netflix Zuul
- 分布式配置——Spring Cloud Config
注册中心
前言:
在早些年刚出来的SpringCloud来自于Apache
近些年Alibaba的SpringCloud慢慢的替代了Apache
就像Spring被SpringBoot替代了一样,只是把一些功能上的优化与加强了.
肯定觉得讲了这么多内容,接下来上代码开撸
首先要知道Cloud还是基于Boot上来优化与增加的
省略---------构建项目的环节
Apache的Cloud:
父工程pom.xml依赖
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<modules>
<module>coupon-eureka</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.aiweiyi.qingjing.coupon</groupId>
<artifactId>coupon</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
启动项的配置:
/**
* @author 青衿
* @Date 2020/11/12 11:20
**/
@SpringBootApplication
@EnableEurekaServer //开启注册中心服务
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.class, args);
}
}
resources配置:application.yml
spring:
application:
name: coupon-eureka
server:
port: 8000
eureka:
instance:
#Eureka Server实例是本机
hostname: localhost
client:
#由于我们只搭建单台Eureka Server,不需要多台Server之间的
#由于注册信息同步,因此fetch-registry设置为false
fetch-registry: false
#由于本模块自身就是Eureka Server,且是单台,不需要把自己
#注册到Eureka Server,因此设置为false
register-with-eureka: false
#本eureka Server对外提供注册、发现服务的地址
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
单服务的注册中心就配置好了,可以启动了
这样的话就启动成功了,咱们去访问一下
这样注册中心就ok了
接下来,咱们配置多服务注册
首先打开C盘的这个位置:C:\Windows\System32\drivers\etc\hosts 文件
在hosts文件中加上下面三个配置即可
122.1.1.1 server1
122.1.1.1 server2
122.1.1.1 server3
咱们使用(cmd)maven的命令来启动一下:
java -jar coupon-eureka-1.0-SNAPSHOT.jar --spring.profiles.active=server1
java -jar coupon-eureka-1.0-SNAPSHOT.jar --spring.profiles.active=server2
java -jar coupon-eureka-1.0-SNAPSHOT.jar --spring.profiles.active=server3
打开三个窗口分别执行
这样的话就成功了