浅谈高并发和设计的一些原则(JAVA)

栏目: Java · 发布时间: 5年前

内容简介:在设计一个系统的时候,因为关于并发?并发包括并行从概念上来讲都是为了提高效率,在最短的时间内怎么来完成最多的事情。 包括现在的双十一、双十二等等,在一秒钟完成了多少的订单,这些都会涉及到并发。附上设计例图:

在设计一个系统的时候,因为 场景时间而异资源配备 等不是一下子就能设计得非常完美,在有限的资源下解决最核心的问题,预测并发现以后可能出现的问题,并逐步解决,所以说 系统设计是一个不断迭代的过程 ,不要过度设计,从迭代中演变和完善。

关于并发?并发包括并行从概念上来讲都是为了提高效率,在最短的时间内怎么来完成最多的事情。 包括现在的双十一、双十二等等,在一秒钟完成了多少的订单,这些都会涉及到并发。 并发和并行 有大神关于两者的阐述:“并发关乎结构,并行关乎执行”

并发
平行

并发类型

计算密集型
IO密集型

设计高并发原则

  1. ** 无状态 :**无状态就是无需做持久化操作,有状态就会涉及到数据同步,消耗内存消耗宽带同时还会涉及到锁的操作,影响快速扩容。
  2. ** 粒度化 :**读写分离也好,应用服务化也好就是为了控制之间的依赖,分散请求提高并发效率,同时管理起来也比较清晰。
  3. ** 场景化 :**合适的场景选择合适的技术(消息队列、数据异构、缓存银弹、并发化)
    • 消息队列 :解耦一些不需要同步调用的服务,或者订阅一些关心的变化,还能流量削峰/缓冲,某些场景会有重复消息( 弊端 ),可以在业务层做防重和校对处理。
      浅谈高并发和设计的一些原则(JAVA)
      RDBMS注重的是ACID,NOSQL注重的是CAP和BASE,一般是牺牲强一致性,而保证最终一致性。
      浅谈高并发和设计的一些原则(JAVA)
    • 数据异构 :我们都知道系统都是由数据构成的,而数据的存储位置和获取的环境不一样,速度也就不一样。单表肯定比联表快,内存取肯定比磁盘取快;就像前面的文章有提过,也是我个人非常喜欢的一句话: 时间换空间,空间换时间 。所以可以根据实际场景和业务来设计,包括根据数据的权重牺牲一部分的资源来提高效率,例如:联表可以考虑数据冗余,或者关键数据的获取合并存储。
    • 缓存银弹 :缓存对于读取服务来说就是颗抗流量的特效武器。
      浅谈高并发和设计的一些原则(JAVA)
    • 并发化 :并发化的理论其实很简单,把没有依赖关系的数据并行获取。可能不太好理解,例如:B依赖A C没有依赖 D依赖B,那么最好的方式就是A、C并行获取,然后再获取B,再是D。

附上设计例图:

浅谈高并发和设计的一些原则(JAVA)

结语

关于例图里面的一些详细示例以后再慢慢补充吧,说了浅谈就是浅谈,要有原则(别打我~~~)!

里面的图片用的是思维导图Xmind做的。

个人博客 ~

简书 ~


以上所述就是小编给大家介绍的《浅谈高并发和设计的一些原则(JAVA)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

年入10万,17岁草根少年的网赚实战

年入10万,17岁草根少年的网赚实战

陶秋丰 / 重庆出版集团 / 2009-3 / 28.00元

《年入10万:17岁草根少年的网赚实战》以一个17岁的在校大学生的真实故事为大家讲述草根少年的网络赚钱之旅。随着网络的普及以及网上应用的日益增多,要在网络上谋生并不难,比如网上写稿、网上兼职、威客赚钱、网上开店等,然而要利用互联网赚大钱,并成就一番事业,那么创建并运营一个独立的网站就是一个绝佳的选择。本书的作者正是经历了“网上写稿一网上各类兼职一策划并创建网站一网站推广与运营一年入10万”这一过程......一起来看看 《年入10万,17岁草根少年的网赚实战》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具