先解释下单体架构:平时开发数据部分+视图部分都放在一个应用中。故而缺点就出来
1.修改数据部分时,视图部分必须等待修改完才能重新打包部署。
2.数据部分或视图部分出错,整个项目无法运行
3.性能问题等等(现在大部分公司都采用的是分布式。。。。。)
名词简单解释:
微服务:一个项目springboot就是一个微服务
分布式:原本数据开发+视图开发现在分在多个项目springboot中开发。
集群:两个springboot开发,功能一样,端口不一样,就是集群
父子-聚合项目:Maven创建:一个父项目,有多个子项目
比如下面:先设置一个微服务注册中心eureka server,然后一个数据微服务,在微服务注册中心注册(为了视图微服务调用),同时数据微服务下面分成2个端口(集群),
这样就类似Nginx的负载均衡了,然后视图微服务访问数据服务时候就会去微服务注册中心eureka server调用接口,最终实现分布式的功能。(整体是在一个SpringCloud的项目下面
也就是说微服务注册中心、数据服务、视图服务都是SpringCloud的子项目)。
共使用了2个视图微服务(使用Feign更佳):
视图微服务Ribbon:使用 restTemplate 进行调用,并进行客户端负载均衡
视图微服务Feign: Feign 是对 Ribbon的封装,调用起来更简单
下面是SpringCloud的父项目,下面4个都是子项目
实现效果如下:
注册服务中心eureka server:
127.0.0.1:8001
127.0.0.1:8002
Ribbon和Feign实现效果都如下(可以看到,视图微服务实现了客户端的负载均衡,与普通的Nginx负载均衡不同,这提高了性能,完美实现了分布式):
-------------------------------------------------------------------------------补充----------------------------------------------------------------
一个小注意点:
127.0.0.1与localhost的区别:127.0.0.1 经过网卡,相当于本机通过网络访问本机,
而localhost不经过网卡,由于本机要重新访问端口8001与8002,所以使用localhost会访问不到页面products
(我是这样的,localhost访问不到,127才行,所以这么分析的。。。。)