目录
一、微服务架构
目前很火的架构或概念,也是构建大型互联网项目时采用的架构方式
1.1单体架构
首先了解一下什么是单体架构
在软件设计中,经常提及和使用经典的3层模型,即表示层、业务逻辑层和数据访间层。
· 表示层,用于直接和用户交互,也称为交互层。通常是网页、U等.
· 业务逻辑层。即业务逻辑处理层,例如用户输入的信息要经过业务运辑层的处理后,才能展现给用户。
· 数据访问层。用于操作数据库,用户在表示层会产生大量的数据,通过数据访间层对数据库进行读写操作。
虽然在软件设计中划分了经典的3层模型,但是对业务场景没有划分。-个典型的单体应用就是将所有的业务场景的表示层。业务逻辑层和数据访问层放在一个工程中,最终经过编译、打包。部署在台服务器上。
单体架构:所谓的单体架构就是把所有的业务模块编写在一个项目中,最终会打包成一个war,然后进行部署运行,连接的话也是连接一个数据库
单体架构的优点
◆部署简单: 由于是完整的结构体,可以直接部署在一个服务器上即可
◆技术单一: 项目不需要复杂的技术栈,往往一套熟悉的技术栈就可以完成开发。。4用人成本低单个程序员可以完成业务接口到数据库的整个流程
单体架构的缺点
◆系统启动慢一个进程包含7所有的业务逻辑,涉及到的启动模块过多,导致系统的启动、重启时间周期过长
◆系统惜误隔高性差、 可用性差,任何一个模块的错误均可能造成整个系统的宕机。
◆可伸缩性差,系统的扩容只能只对这个应用进行扩容,不能做到对某个功能点进行扩容
◆线上间题修复周期长任何一个钱上问题修复需愛对整个应用系统进行全而开级。
2.1、微服务架构
1.什么是微服务
微服务是一种架构风格,一个大型的复杂软件应用,由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件并很好的完成该任务。
2.架构风格
常见的架构风格
客户端与服务器的
基于组件模型的架构(ejb)
分层架构(MVC)
面向服务架构(SOA)
3.微服务的特点
系统是由多个服务构成
每个服务可以独立部署
每个服务之间是松耦合的,服务内部是高内聚的,外部是低耦合的高内聚就是每个服务只关注完成一个功能。
4.微服务优缺点
优点
测试容易
可伸缩性强 (内部高内聚,外部松耦合,每个服务都很容易按需扩展,可以随意的对所需扩展的服务进行水平扩展。如果单体架构进行比如商城项目的某个访问量比较频繁的模块进行扩展,会很麻烦,需要对整个项目进行扩展。微服务架构则不然。可以根据某个服务压力大了,对某个服务进行水平扩展,其他压力小的服务可不进行扩展。他们相互间没什么影响)
可靠性强 (不会因为某个bug而导致整个服务宕机)
跨语言程度更加灵活 (可根据需要选择不同的语言做不同模块)
团队协作容易 (不同的团队做不同的实现,每个成员关注的更细化。减低了程序员的学习成本。不用去关注其他模块的业务等各种,沟通更加容易,不至于那么频繁)
系统迭代容易 (哪个服务进行了变更,仅对那一个服务进行迭代更新)
缺点
运维成本增加,部署数量较多。不像单体架构,只放到一个tomcat中就可以了。服务越多所需要部署的点就越多
接口兼容多版本问题,一个接口的变更一定会导致多个客户端跟着改。那么就需要做接口的多版本开发
分布式系统的复杂性,一个项目拆分成多个服务,则会导致项目间的延时。服务不稳定,服务的容错性、服务的负载均衡等等问题
分布式事务问题
学习日记(一)
来源,北京尚学堂视频