多线程、分布式、集群和高并发的区别说明
下文笔者讲述多线程、分布式、集群和高并发的区别说明,如下所示
多线程
多线程是指从软件或硬件上实现多个线程并发执行的技术。它更多的是解决CPU调度多个进程的问题, 从而让这些进程看上去是同时执行 在JAVA语言中,需要对JVM内存模型和指令重排序等深入了解 才能写出一份高质量的多线程代码 多线程对应的是cpu,高并发对应的是访问请求 可以用单线程处理所有访问请求 也可以用多线程同时处理访问请求
分布式
分布式是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段 它将一个完整的系统 按照业务功能拆分成一个个独立的子系统 实现业务解耦。处理请求时需要调度多台服务器 从而提高一个请求的处理速度 但是如果一个节点宕机 那么这个业务就不可访问 常见的分布式系统有: 分布式文件系统 分布式数据库 分布式缓存 分布式计算 等 如:Hadoop、zookeeper、MQ等都跟分布式有关
集群
集群就是多台服务器集中在一起 实现同一业务 处理请求时调用哪台服务器都可以。它是从原来的单机演变而来的 单台机器扛不住流量压力时就加机器进行分流 直到服务负载、稳定性、延时等指标都满足要求 集群中的N台机器上部署一样的程序(通俗地讲就是多台tomcat放相同的代码) 像一台机器被复制多份一样 这种形式就是集群化 集群有如下两个特点: 可扩展性: 集群中的服务可以动态的添加机器,从而提升集群的处理能力。 高可用性: 如果集群某个节点发生故障,这个节点上面运行的服务可以被其它服务节点接管,从而增强集群的高可用性。
高并发
高并发(High Concurrency) 在解决的问题上会集中一些 其反应的是同时有多少流量进来 如:12306抢票、在线直播、秒杀和双十一活动等 此时同一时间段会发生大量的操作 如: 对资源的请求,数据库的操作等 当高并发处理不好,不仅仅降低用户的体验度(请求响应时间过长),同时可能导致系统宕机,严重的甚至导致OOM异常,系统停止工作等。 高并发的解决方法: 可使用分布式来解决 将并发的流量分到不同的物理服务器上 当然还可以使用静态化,减少访问慢的内容处理 如:使用缓存,将所有的静态内容放到CDN等
多线程、分布式、集群和高并发的区别
从以上三者的简介中,我们可以得出四者的区别,如下所示: 分布式: 从物理资源的角度去将不同的机器组成一个整体对外提供服务的 技术范围非常广且难度非常大,有了这个基础,高并发,高吞吐等系统很容易实现。 多线程: 使用编程语言将CPU调度能力最大化。 高并发: 从以业务角度去描述系统的能力 实现高并发的手段可以采用分布式
实现高并发的手段
1、静态资源结合CDN来解决图片文件等访问 2、分布式缓存:redis、memcached等 3、消息队列中间件:Rabbit MQ和Apache Kafka等,解决大量消息的异步处理能力 4、应用拆分:一个工程被拆分为多个工程部署,利用dubbo解决多工程之间的通信 5、数据库垂直拆分和水平拆分(分库分表)等 6、数据库读写分离,解决大数据的查询问题 7、利用nosql ,例如mongoDB配合mysql组合使用 8、建立大数据访问情况下的服务降级以及限流机制等
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。