微服务架构:
微服务架构的核心思想是,一个应用是由多个小的、相互独立的、微服务组成,这些服务运行在自己的进程中,开发和发布都没有依赖。不同服务通过一些轻量级交互机制来通信,例如 RPC、HTTP 等,服务可独立扩展伸缩,每个服务定义了明确的边界,不同的服务甚至可以采用不同的编程语言来实现,由独立的团队来维护。简单的来说,一个系统的不同模块转变成不同的服务!而且服务可以使用不同的技术加以实现!
微服务设计
那我们在微服务中应该怎样设计呢。以下是微服务的设计指南:
-
职责单一原则(Single Responsibility Principle):把某一个微服务的功能聚焦在特定业务或者有限的范围内会有助于敏捷开发和服务的发布。
-
设计阶段就需要把业务范围进行界定。
-
需要关心微服务的业务范围,而不是服务的数量和规模尽量小。数量和规模需要依照业务功能而定。
-
于SOA不同,某个微服务的功能、操作和消息协议尽量简单。
-
项目初期把服务的范围制定相对宽泛,随着深入,进一步重构服务,细分微服务是个很好的做法。
SpringCloudEureka的作用
Spring Cloud Eureka 它是通过封装 Netflix 开源的Eureka,一款基于 Rest 的服务发现与注册组件,包括 Eureka Server 和 Eureka Client。
1.以前项目中的单体应用架构 一般是通过ip地址加端口号如localhost:8080/user/login 如图所示:
隐患:如果此时有多个服务器提供服务并且每个提供服务器的端口发生该表那么整个服务就会调用失败!
2:如果有了当有了Eureka注册中心后 ,如图所示
3.开始搭建高可用的Eureka注册中心。(新建两个SpringBoot应用)
pom.xml
<!--注册中心version的版本随本身的SpringBoot应用版本选择合适的 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> <version>2.1.1.RELEASE</version> </dependency>
yml配置 端口为9001的SpringBoot应用
# 服务名称
spring:
application:
name: lzx-server-eureka
# 服务端口号
server:
port: 9001
#Eureka 相关配置
eureka:
client:
service-url:
defaultZone: http://localhost:9002/eureka/
server:
enable-self-preservation: false
yml配置 端口为9002的SpringBoot应用
# 服务名称
spring:
application:
name: lzx-server-eureka
# 服务端口号
server:
port: 9002
#Eureka 相关配置
eureka:
client:
service-url:
defaultZone: http://localhost:9001/eureka/
server:
enable-self-preservation: false
SpringBoot启动类配置
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; /** * @author 陈康 * @date 2019/09/30 */ @SpringBootApplication @EnableEurekaServer public class LzxServerEurekaSlaveApplication { public static void main(String[] args) { SpringApplication.run(LzxServerEurekaSlaveApplication.class, args); } }