个人学习资源免费分享网站: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.分布式事务和分布式锁

分布式事务:当遇到复杂业务调用时,可能会出现跨库多资源(一个事务管理器,多个资源)/多服务调用(多个事务管理器,多个资源),期望全部成功或失败回滚,这就是分布式事务,用以保证“操作多个隔离资源的数据一致性”。

分布式锁:

java架构设计理解(一)相关推荐

  1. java架构设计和框架开发有什么区别

    前言 我的一个朋友,开发四年了,没跳过槽,四年时间也不过是从最开始的10K涨到了15K,经常和我吐槽工资低.去年8月份左右开始了他"骑驴找马"的行动,从各种地方找学习资料.刷面试题 ...

  2. 花了我一个晚上浓缩了一整套阿里资深技术专家设计教程整理出的java架构设计方法

    最近学习了阿里资深技术专家设计教程,颇有收获,总结一下. 1 基本概念和目的   相关资料领取 架构设计的目的是为了解决系统复杂度带来的问题,并不是要面面俱到,不需要每个架构都具备高性能.高可用.高扩 ...

  3. java开发架构设计_跪了!阿里技术官出品:Java架构设计之完美,看完秒进大厂。...

    写在前面 "给我一个支点,我就能撬起地球".关键不在于力量有多大,而在于如何合理地利用力量.软件设计同样如此.思想的确立,技巧的把握,将在很大程度上决定软件架构的合理性.内容涵盖了 ...

  4. 敏捷思维- 架构设计中的方法学

    敏捷思维-架构设计中的方法学 目录 1.从方法论看架构设计... 2 2.架构设计的敏捷视图... 7 3.源自需求... 13 4.团队设计... 18 5.简单设计... 24 6.迭代设计... ...

  5. 敏捷思维-架构设计中的方法学

    敏捷思维-架构设计中的方法学 1.    从方法论看架构设计 1.    架构设计的敏捷视图 2.    源自需求 3.    团队设计 4.    简单设计 5.    迭代设计 6.    组合使 ...

  6. 架构设计-架构愿景分析

    架构愿景实际是回答了哲学家经常思考的三个问题: 我是谁? (问题是什么,现状) 从哪里来??(原因:为什么出现问题) 到哪去? (愿景和目标是什么) 一.前言:架构设计的步骤 架构设计非常适合使用瀑布 ...

  7. Java软件架构设计

    http://blog.csdn.net/hdy007/article/details/1509910 开始的架构设计也是最难的,需要调研同类产品的情况以及技术特征,了解当前世界上对这种产品所能提供的 ...

  8. 阿里P7架构师告诉你Java架构师必须知道的 6 大设计原则

    在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义.本文主要将总结这些常见的原则,和具体阐述意义. 开发原则 面向对象的基本原则 ...

  9. Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲

    Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台:   微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...

最新文章

  1. PL/SQL ——分页编程
  2. System.Transactions介绍
  3. springmvc学习及源码地址
  4. SpringMVC源码剖析(三)- DispatcherServlet的初始化流程
  5. 用户交互php源码,phpWebSite ,容许个人和群组用户很容易地维护一个交互式社区驱动的站点.phpWebSite...
  6. VUE data传值
  7. python新版下载安装_各种版本的Python下载安装教程
  8. 少儿编程100讲轻松学python(六)-pycharm怎么汉化?
  9. PCA-SIFT原理及源码解析
  10. UOJ 55 【WC2014】紫荆花之恋——点分治+平衡树
  11. 最新手机号码、电话号码正则表达式
  12. CSS3 GPU硬件加速
  13. Win10应用程序添加到右键中
  14. 华为云sql工程师评测答题[青铜+白银]
  15. LeetCode:数组(排列组合,二分查找I,二分查找II)
  16. 树莓派与OpenCV实现人脸识别(OpenCV安装篇)
  17. window内置对象和js内置对象与方法
  18. 【转载】不死族资深玩家的三年心得
  19. 面经手册 · 第2篇《数据结构,HashCode为什么使用31作为乘数?》
  20. 提升网站访问速度--Yslow优化

热门文章

  1. Spring Cloud Alibaba 基础教程:Nacos 生产级版本 0.8.0
  2. 2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest
  3. SPOJ 694 不同子串个数
  4. 填问卷赢280元SaaS峰会门票 与Salesforce、Zenefits现场交流!
  5. c实现面向对象编程(3)
  6. sqlplusw下登录sys账户
  7. Cisco交换机与路由器的密码恢复_路由交换
  8. 学习C#要养成的好习惯
  9. 庆祝天津.Net俱乐部成立,辛苦TerryLee了,感谢dudu!
  10. 行波iq调制器_高速InP基半导体电光调制器行波电极结构研究