技术选型
说到这里开始搭建项目了,既然是选用了微服务,我决定采用了市场上流行的springcloud全家桶。Springcloud属于集成性的框架,除了自身所提供的微服务核心组件,也可以集成它家的框架。
Spring cloud全家桶
注册中心
微服务的核心是服务注册中心,服务名下可以分布多个实例,通过负载均衡机制来请求。
Springcloud提供的注册中心Netflix Eureka,实际上大多数注册中心组件工作原理相同:服务注册,服务信息拉区,缓存本地,服务中心与客户端心跳机制检测,以及服务中心通知更新。
负载均衡策略
微服务之间通信的协议可以是http,也有RPC,我采用的ribbon,基于RestTemplate的封装和aop增强,加入了负载均衡策略,超时重试的机制。
负载均衡默认采用了轮询机制。Feign是ribbon+hystrix的封装,本项目采用的是Feign,面向接口式的通信。
分布式配置
将各个微服务的配置文件统一管理,我采用的式Spring Cloud Config,虽然功能比较简单,后期可能会替换成其它的配置中心。
Spring Cloud Config默认式将配置文件放在git上,我当然不会这么做,在本地建立一个项目,配置文件就放在本地的项目里统一管理。
服务网关
所有微服务的统一入口,这个我在项目开发完毕的周期,加入了zuul网关,虽然后台接口调试成功了,但涉及到了前端静态资源路由和路径映射错误的问题,虽然尝试用绝对路径解决,但还是无效。
Mvc分层
依赖springboot父项目,配置化优先,springboot给我们带来的便利是配置自动化,一般情况下我们都是使用的默认配置,这就是自动化的意义所在。
项目的分层架构依然使用经典的model2:试图层,控制层,数据层(service+dao)
控制层使用springmvc,持久层采用mybatis-plus(不必在整合逆向工程,逆向工程的明显缺陷就是数据字段发生改变不宜维护)。
其它工具
Nginx
一种用c语言开发的反向代理工具,针对域名映射服务,文件系统映射。占用内存小,效率高,可达到每秒2万次请求,启动速度快的特点。
Nginx也为我们提供了负载均衡的功能,但是不会讲台用作微服务之间的调用。我将它用作服务器上图片的映射。
Redis
缓存功能是少不了的,在单点登录里面保存用户信息,以及缓存博客类型数据时用到了缓存。这里我配置的是redis哨兵机制。
技术选型之后就是项目的搭建,下一篇博客会为各位介绍,以及各个工具的作用和特点。