一、引言
1.1 什么是SpringCloud?
SpringCloud是基于SpringBoot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是,跟spring boot框架一起使用的话,会让你开发微服务架构的云服务非常好的方便。
1.2 什么是微服务?
单体架构中,所有的代码集中在同一个项目中。虽然便于管理,但是当项目足够庞大时,所有的业务模块都集中在一个JVM进程中,会面临很多问题:
1、项目过于臃肿,难以维护
2、资源无法隔离,某个资源出现问题,整个系统崩溃
3、拓展性差,通常只能水平拓展,缺乏灵活性
什么是微服务?
简单来说,微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。
微服务的特点:
1、根据业务模块划分服务
2、每个服务可以独立部署并且互相隔离
3、通过轻量的 API 调用服务
4、服务需要保证良好的高可用性
三高(高并发、高性能、高可用)
大致的微服务架构分布图
maven是单继承的不支持多继承,idea是怎么让maven支持多继承的
测试包是不具备继承性的,父工程也不需要测试代码
这个插件最好删掉,因为我们的子工程都是微服务嘛,不是的,我们还需要工具服务,比如实体类,这种服务不能加这个插件,会编译报错。
#配置注册中心的端口
server:
port: 20000
#配置微服务的名字(重要,千万别写下划线)
spring:
application:
name: eureka-server
#配置注册中心的地址
eureka:
client:
service-url:
defaultZone: http://localhost:20000/eureka
#当前微服务是否可以去调用其他微服务,默认为true,如果当前微服务是注册中心的话,则必须设置为false
fetch-registry: false
#当前微服务就不会注册到注册中心上(其他的微服务就不能调用当前微服务了,但是当前微服务仍然可以调用其他微服务)
register-with-eureka: false
eureka挂掉了,服务是怎么发现的?
他是通过心跳机制,当微服务 第一次连接eureka会建立长连接,eureka是半分钟,发一次长连接。
host文件
集群搭建的步骤:
1)准备3个Eureka服务,错开端口
2)修改本机的host文件,给每个Eureka服务分配一个主机别名(实际的集群中不需要),写在本地域名解析服务器上。
127.0.0.1 eureka1
127.0.0.1 eureka2
127.0.0.1 eureka3
每个主机都有,什么操作系统都有host 文件,域名对ip的包装,本质上访问的是域名,其实访问的还是ip,假设客户端发送请求,互联网不认识这个地址,DNS服务器(域名解析服务器),你把地址发给他,他会返回一个真实的ip地址。客户端发送这个请求的时候他不是先去访问DNS服务器,而是先去本地域名解析服务器找。在本地没有解析成功才会去DNS服务器找。
hosts文件的路径:
window - C:\Windows\System32\drivers\etc\hosts
linux - /etc/hosts