微服务的提出:james Lewis & Martin Fowler 在2014年3月25号在一篇《Microservice》中提出微服务
《Microservice》原文:https://martinfowler.com/articles/microservices.html
微服务是一种架构风格,并具有如下特点:
一系列微小服务共同组成
跑在自己的进程里
每个服务为独立的业务开发
独立部署
分布式管理
系统架构
系统架构的发展历程:
ps:本图来自Dubbo官网
单体架构的优缺点:
优点:容易测试:由于没有外部依赖,可以在本地完全启动系统,所以很容易测试。
容易部署:系统是一个整体,只需要把项目打包,既可以发布。
缺点:开发效率低:项目是整体架构,代码之间相互依赖过于强,开发者之间很难协作,代码也容易冲突。
代码难维护:业务代码庞大且在一起,很难梳理清晰。
部署不够灵活:构建时间长,项目中任意一处修改都需要进行重新打包发布,浪费时间,资源。
稳定性不高:项目中任何一个位置出现问题,项目整体崩溃,牵一发而动全身。
扩展性不够:项目需要负载均衡时,单体架构的项目很难做到。
前后端分离架构的优缺点:
优点:减轻服务器压力:js能够处理大多情况的数据处理。
界面友好:后端服务器出现bug,不会直接显示到前端页面。
缺点:如果是 PC 端的站点,需要考虑是否需要强支持 SEO ,前后端分离的架构,很可能需要搜索引擎的 spider 执行完 js 才能得 到完整的可收录的页面,而“执行 js ”并不是所有搜索引擎都支持的,此时势必影响站点的收录。
分布式架构:
定义:旨在支持应用程序和服务开发,可以利用物理架构由多个自治的处理元素,不共享主内存,但通过网络发送消息合作
------------Leslie Lamport
微服务架构的基础框架/组件
服务注册发现:服务提供方注册,并将本身的地址以及字节信息提供,由服务调用方来发现,并正确使用。
服务网关(Service Gateway):对外屏蔽后台的具体实现细节;具有路由功能,能够将外部请求指向内部具体的微服务;认证,授权,安全,限流等功能。
后端通用服务(也称中间层服务Middle Tier Service):
前端服务(也称边缘服务Edge Service):