最近工作不是很忙,一直想想写几篇文章来记录一下最近这一段时间的学习和收获,前段时间帮一哥们搞了一个小程序,把写文章的事情给耽搁了。
现在结合公司前段时间做的项目,该项目是一个单体架构的项目,加上自己对微服务的理解,用微服务的模式,来重构一下这个项目。
1、前端介绍
最近vue3.0发布了,具体优化了哪些性能,出了哪些新特性也没有去了解。。。前后端分离开发,前端使用技术请自行百度,这里不做详细介绍了。
2、负载均衡
这里选用的是nginx,没有考虑SLB,我是从这些方面考虑的:
a:slb要收钱(主要原因),但是有保障,不会挂。
b:nginx免费,但是对技术要求较高,需要一定的nginx知识。
3、CDN
用来缓存静态文件。
4、注册中心
Eureka虽然已经停止更新了,但是市面上还是有一些公司在使用,现在有些公司使用的是zookeeper或者是阿里出的Nacos,作用并没有什么太大的区别,详细的区别请自行百度,这里不做详细的介绍。
5、zuul路由网关
zuul的核心是一系列的filters, 其作用可以类比Servlet框架的Filter,或者AOP。zuul可以加载和编译过滤器,zuul提供了内置的过滤器,并且支持自定义过滤器。
6、Ribbon负载均衡
Ribbon其实就是一个软负载均衡的客户端组件,会从eureka注册中心服务器端上获取服务注册信息列表,缓存到本地。上 面提到的nginx也是负载均衡的作用,但是这两个有着实质的区别。nginx是客户端的请求同意进入nginx服务,由nginx在服务 内自行转发,属于服务端负载均衡;eureka是将eureka注册中心服务器端上获取服务注册信息列表,缓存到本地,在本地实 现负载均衡策略,属于客户端负载均衡。
7、消息队列
ActiveMQ, rocketMQ, robbitMQ,Kafka各有好处, 但是考虑到运维的难度,这里选用的是robbitMQ。其他技术的具体区别,不做详细介绍
8、mysql数据库
自建数据库,设置读写分离和主从复制,设置数据库集群。
9、redis缓存
用来做缓存设置,搭建集群,设置分片。。。
10、ELK
不仅可以自动同步数据库,除了搜索引擎的功能外,还可以做日志搜索,监控系统。
这是我对前段时间所做项目从单体架构到微服务架构的一个理解和整理。