发表于: 2020-07-25 23:12:34
1 1410
今天完成的事情:
1.学习springcloud
什么是SpringCloud?
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
SpringCloud的组件大概有:
Eureka 服务注册中心
服务消费者 Rest 和 Fegin --消费实现负载均衡ribbon
接口网关Zuul
Hystrix 关于服务雪崩的解决方案--服务熔断、服务降级、隔离资源。
SpringCloud和Dubbo的区别:
首先要创建注册中心:
导入依赖:
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
配置文件:
server:
port: 8888
#Eureka配置
eureka:
instance:
hostname: localhost #eureka服务端的实例名称
client:
register-with-eureka: false #表示是否像注册中心注册自己
fetch-registry: false #为false 则表示自己为注册中心
service-url: #eureka监控页面
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
服务端启动类:
package com.jnshu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer //服务端的启动类
public class EurekaServer_8888 {
public static void main(String[] args) {
SpringApplication.run(EurekaServer_8888.class,args);
}
}
只需要价格@EnableEurekaServer注解即可。
启动,访问eureka页面:
之后注册的服务都会显示在application下。
接下来将Sevice和Web服务加进去。
导入依赖:
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.jnshu</groupId>
<artifactId>springcloud_service8080</artifactId>
<version>1.0</version>
<name>springcloud_service8080</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
注意springcloud和springboot的版本匹配问题。
Service:
配置文件:
server:
port: 8080
spring:
datasource:
username: root
password: As85875127
url: jdbc:mysql://localhost:3306/task7?serverTimezone=UTC&characterEncoding=utf8
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
type-aliases-package: com.jnshu.pojo
mapper-locations: classpath:mybatis/mapper/*.xml
#Eureka的配置,服务注册到哪里
eureka:
client:
service-url:
defaultZone: http://localhost:8888/eureka/
客户端启动类:
package com.jnshu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class SpringcloudService8080Application {
public static void main(String[] args) {
SpringApplication.run(SpringcloudService8080Application.class,args);
}
}
也只需要加上@EnableEurekaClient即可。
启动,控制页面发现多了一个服务:
springcloud有自我保护机制,每隔30秒发送一次“心跳”来确认服务是否存货,如果将服务端关闭,也不会立即删除服务:
若之后服务恢复正常,仍可继续使用。
status链接的信息也可以自定义,导入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
然后在yml文件中配置info:
info:
app.name: server
company.name: com.jnshu.server
收获:了解了微服务,使用springcloud注册服务。
明天计划完成的事情:
继续学习springcloud。
评论