发表于: 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。


返回列表 返回列表
评论

    分享到