个人学习资源免费分享网站:http://xiaocaoshare.com/
1.关于单机架构、集群架构、分布式架构理解:
单机架构:所有的代码都写在一个项目中,项目部署在一台服务器上
集群架构:就是单机复制几份,一起组成的就是集群。集群中每台服务器就叫做这个集群的一个节点,所有节点构成了一个集群。 每个节点都提供相同的服务
集群的好处:系统易于扩展。但是,当业务发展到一定程度的时候,会产生一个问题——无论怎么增加节点,整个集群性能的提升效果并不明显了。这时候,就需要使用微服务结构了
负载均衡服务器作用:主要解决用户的请求,交给哪个节点进行处理。(最好交给负载较小的节点进行处理)
负载均衡策略:
1)轮询(默认)
缺点:不会考虑到每台服务器的处理能力
2)权重
注意 权重这种策略是根据权重的比例进行负载,是这样的一个概率,而不是百分百按比例分配。
优点:考虑了每台服务器处理能力的不同,用的最多.
3)ip_hash
优点:能实现同一个用户访问同一个服务器,解决了分布式session问题
缺点:ip hash 负载均衡也是不平均的,可能不会起到很好的效果。
4)url hash(第三方:需要配第三方插件)
优点:能实现同一个服务(url)访问同一个服务器
缺点:分配请求不平均,起不到负载均衡的功能,还是一个url会有大量流量.
5)fair(第三方)
优点:根据后端服务器的响应时间分布请求,响应时间短的优先分配
分布式架构:将一个完整的系统,按照业务功能,拆分成一个个独立的子系统。在分布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,它们之间通过RPC方式通信。
从单机结构到集群结构,业务代码基本不需要作任何修改,工程师要做的仅仅是多部署几台服务器,每台服务器上运行相同的代码就行了。但是,从集群结构演进到微服务结构,之前的那套代码就需要发生较大的改动。所以对于新系统,系统设计之初就采用微服务架构,这样后期运维的成本更低。但如果一套老系统需要升级成微服务结构的话,那就得对代码大动干戈了。所以,对于老系统而言,究竟是继续保持集群模式,还是升级成微服务架构,这需要架构师深思熟虑、权衡投入产出比。
分布式架构的特点:
- 系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得相当容易,开发效率大大提升。
- 系统之间的耦合度降低,从而系统更易于扩展,可以针对性地扩展某些服务。假设这个商城要搞一次大促,下单量可能会大大提升,因此可以针对性地提升订单系统、产品系统的节点数量,而对于后台管理系统、数据分析系统而言,节点数量维持原有水平即可。
- 服务的复用性更高。比如,将用户系统作为单独的服务后,该公司所有的产品都可以使用该系统作为用户系统,无需重复开发
区别联系:
1)集群主要的使用场景是为了分担请求的压力,分布式的应用场景是单台机器已经无法满足性能的要求
2)分布式是指多个系统协同合作完成一个特定任务的系统。分布式的主要工作是分解任务,将职能拆解
3)集群主要是简单加机器解决问题,对于问题本身不做任何分解
将一套系统拆分成不同子系统部署在不同服务器上,这叫分布式。
然后部署多个相同的子系统在不同的服务器上,这叫集群。
部署在不同服务器上的同一个子系统,叫做负载均衡。
分布式和微服务的区别:
微服务是架构设计方式,分布式是系统部署方式
微服务的设计是为了不因为某个模块的升级和BUG影响现有的系统业务。微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。
分布式属于微服务
2.微服务、SpringBoot区别和联系
微服务就是将一个系统按照功能模块进行划分,每个功能独立打包部署在web容器里面,每个功能成为一个服务,服务直接使用SpringCloud或Dubbo远程调用协议进行服务间调用
springboot是一个快速搭建应用的框架,不是微服务
3.分布式事务和分布式锁
分布式事务:当遇到复杂业务调用时,可能会出现跨库多资源(一个事务管理器,多个资源)/多服务调用(多个事务管理器,多个资源),期望全部成功或失败回滚,这就是分布式事务,用以保证“操作多个隔离资源的数据一致性”。
分布式锁: