1.问题的由来?
在项目越来越大时(单机架构 All in one),如果项目出现了宕机,那整个项目都会无法使用, 在此基础上,出现了"微服务"!!!
2.微服务的概述:
一. 将一个大项目分成多个小项目(微服务)
二.微服务的优势:
>单一职责:微服务的粒度更小,每个微服务的对应唯一的功能,做到单一职责
>自治:团队独立,技术独立,数据独立,独立部署和交付
>面向服务: 每个微项目提供统一的接口,与语言和技术无关
>隔离性强: 微服务强调做好隔离,容错,降级,避免出现级联问题(雪崩,指一个项目错误导致整 条 链路出现问题,乃至整个项目崩溃.而做好各级隔离后,就算一个环节出错,不至于 导致雪崩)
##### 2.微服务的组件:
> ###### netflix : eureka (注册中心)
> netflix : eureka (注册中心)
Eureka 组件 解决了各个微项目之间的连接问题,有解耦,方便管理的优点,可以管理各微项目的地址
>架构: server (服务端);client (客户端)
>如何使用: 1.创建服务端项目,并导入Eureka的依赖,(需要注意springcloud的版本要 和springboot的对应,否则无法使用)
2.在App类中添加服务端的注解,否则默认为客户端(因为Eureka雌雄同体)
3.在服务端的配置文件中设置 端口号,项目名称,和Eureka的IP地 址,"register-with- eureka:false","fetch-registry:false" 后面这两项是说自己为注册中心,不用注册自己和 不拉取服务本eureka服务中的服务信息.
4.在需要用到Eureka注册的项目(客户端)中导入客户端的依赖,并在配置文件中标明自 己的名字(_不能用)
5.在需要远程调用的客户端中restTamplate Bean方法 上加@LoadBalanced注解
6.登录Eureka的网站,查看已经管理的微项目
>Eureka 在管理集群项目时,常用的有负载均衡模式和随机调用可用的两种模式
服务端的配置文件:
客户端其一的配置文件:
父pom 中的依赖:
Eureka(注册中心)中的依赖:
需在APP类上加@EnableEurekaServer的注解,以表明此项目 为服务端,而不是客户端
客户端的pom文件:
需要远程调用的客户端启动类上加@LoadBalanced注解
整体效果:
流程图: