乐优 小总结

1 系统架构演变

随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。系统架构也因此也不断的演进、升级、迭代。从单一应用,到
垂直拆分,到分布式服务,到SOA,以及现在火热的微服务架构,还有在Google带领下来势汹涌的Service Mesh。我们到底是该乘坐微服务的船只驶向远方,还是偏安一隅得过且过?

1 集中式架构
2垂直拆分
3分布式服务
4 服务治理 (SOA)
5微服务
乐优 小总结

微服务的特点:

单一职责:微服务中每一个服务都对应唯一的业务能力,做到单一职责
微:微服务的服务拆分粒度很小,例如一个用户管理就可以作为一个服务。每个服务虽小,但“五脏俱全”。
面向服务:面向服务是说每个服务都要对外暴露服务接口API。并不关心服务的技术实现,做到与平台和语言无关,也不限定用什么技术实现,只
要提供Rest的接口即可。
自治:自治是说服务间互相独立,互不干扰
团队独立:每个服务都是一个独立的开发团队,人数不能过多。
技术独立:因为是面向服务,提供Rest接口,使用什么技术没有别人干涉
前后端分离:采用前后端分离开发,提供统一Rest接口,后端不用再为PC、移动段开发不同接口
数据库分离:每个服务都使用自己的数据源
部署独立,服务间虽然有调用,但要做到服务重启不影响其它服务。有利于持续集成和持续交付。每个服务都是独立的组件,可复用,可替
换,降低耦合,易维护

2 Spring Cloud

Spring最擅长的就是集成,把世界上最好的框架拿过来,集成到自己的项目中去

SpringCloud也是一样,它将现在流行的一些技术整合到一起

诸如: 配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群等等功能。其中 涉及的组件包括:

1 Eureka注册中心:各个服务启动时,Eureka Client 都会将服务注册到 Eureka Server,并且 Eureka Client 还可以反过来从 Eureka Server 拉取注册表,从而知道其他服务在哪里。

2 Ribbon 负载均衡:服务间发起请求的时候,基于 Ribbon 做负载均衡,从一个服务的多台机器中选择一台。

3 Feign 服务调用:基于 Feign 的动态代理机制,根据注解和选择的机器,拼接请求 URL 地址,发起请求。

4 Hystrix:发起请求是通过 Hystrix 的线程池来走的,不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务雪崩的问题。

5 Zuul 服务网关:如果前端、移动端要调用后端系统,统一从 Zuul 网关进入,由 Zuul 网关转发请求给对应的服务。

3 解决域名问题

乐优 小总结

4 解决端口问题 nginx

4.1 什么是nginx

乐优 小总结
乐优 小总结
乐优 小总结

流程分析

乐优 小总结
浏览器准备发起请求,访问http://mamage.leyou.com,但需要进行域名解析

优先进行本地域名解析,因为我们修改了hosts,所以解析成功,得到地址:127.0.0.1

请求被发往解析得到的ip,并且默认使用80端口:http://127.0.0.1:80

本机的nginx一直监听80端口,因此捕获这个请求

nginx中配置了反向代理规则,将manage.leyou.com代理到127.0.0.1:9001,因此请求被转发

后台系统的webpack server监听的端口是9001,得到请求并处理,完成后将响应返回到nginx

nginx将得到的结果返回到浏览器

5 CROS解决跨域

什么是跨域

乐优 小总结