菜狗本人,多一些模糊概念的整理。欢迎大家指点,但拒绝指指点点。
多线程?
线程和进程的概念
举例:
打开一个应用——》一个进程
在该应用中可以进行多个功能操作——》多个线程
多线程
从软件/硬件上实现多个线程并发执行的技术。具体多线程能力可以在同一时间执行多个线程。
一种异步处理方式。
多线程实现原理
并发执行机制:把一个处理器划分为若干个短的时间片,每个时间片一次轮流执行各个应用程序。(涉及资源调度?
多线程存在问题
1.线程安全
2.死锁
高并发?高并发==多线程?
保证系统能够同时处理多个请求。
高并发是系统运行的一种状态,是系统运行过程中遇到的一种短时间内大量操作请求(12306的抢票情况;双十一)的情况,主要发生在web系统集中大量访问或者socket端口集中性收到大量请求。这种多个请求的状态会对系统带来挑战。比如资源的请求,数据库操作等。
因此应对产生各种方案进行优化:硬件、网络、系统架构、开发语言选取、数据结构的运用、算法优化、数据库优化等…多线程只是其中一种解决方案。
常用的解决方案
系统拆分、缓存(读多写少场景)、MQ消息队列、分库分表、读写分离(主从架构,主写从读)
高并发的常用指标
响应时间RT(Response-time)、
每秒查询率QPS(Queries Per Second),
每秒事务TPS(Transactions Per Second)
并发用户数
吞吐量
线程数
高性能 高可用
是高并发处理后的结果?
分布式?-----集群
解决单个物理服务器容量和性能瓶颈问题而采取的优化手段。
分布式带来的挑战
部署难、运维不简单;
网络瓶颈和故障;
节点失效要有觉察和热替换机制;
一致性问题–分布式事务;
负载均衡的效果等等等等。。。
分布式的解决方案
不同层面水平扩展有不同的解决:
- 反向代理层:”DNS轮询“
- 站点层:nginx
- Web服务器层(七层):负载均衡、请求分发
- 数据层:分布式文件系统、分布式缓存、分布式数据库、分布式计算。对应技术:Hadoop、zookeeper、MQ;
分布式理论
CAP
一致性、可用性、分区容错性 只能保证CP/AP
ZK、HBase是CP架构,Eureka是AP架构,Nacos不仅支持CP也支持AP架构。
BASE
BA:基本可用、S:软状态、E:最终一致性
基本可用:允许部分损失,比如响应时间、系统功能(保证核心功能的使用
软状态:允许数据不一致。允许不同节点的数据副本之间进行数据同步时存在延时。
最终一致性:经过一段时间后最终的数据要保证一致。
- 总结:高并发是一种状态,分布式、多线程都是实现高并发的方式,分布式可以将不同的流量分到不同的物理服务器,多线程可以将一台服务器的服务能力最大化。高可用、高性能是结果。
针对微服务和分布式还是需要做区分。明天整理。
另外,针对这些情况各自的锁需要整理。线程锁、进程锁、分布式锁的区别。