03-三高-并行并发&服务内
三高项目-服务内并发
cap:分布式系统的起点。
一致性,可用性,分区容错性。
P:分区容错性。分区,容错。
因为有网络的8大谬误:
网络是可靠的。
没有延迟
带宽无限
网络安全
拓扑结构不变
只有一个管理员
传输代价没有,为0
网络是同构的
怎么解决分区容错。
单体应用。
条理:
C:从读和写,一致性。
一致:
不一致:
一致性分哪几类:
强一致性:
弱一致性:能容忍部分或全部 看不到最新的数据。
最终一致性:经过一段时间,能看到最新的数据。
A:可用性。
可用:
不可用:
AC是冲突的。
cap,一般不用业务做说明。
互联网中大部分场景下:A>C。
cap:
舍弃P:单点数据库。(但是 考虑 数据库集群的时候,就要考虑P。)
舍弃A:zk
舍弃C:多了。eureka。
AP,舍弃C。舍弃强一致性,保证最终一致性。大厂。通过最终一致性 兼顾了 三个特性。
读多写少。
内部并发
进程
线程
协程
分配资源,开销,资源,环境,耗时。
docker,不同端口启动(主要是利用资源的隔离性)。
线程:
网约车中:计价,按时长收费+路程收费=总费用。
多线程目的2个:
提升效率:io读数据,cpu去计算,io输出。
实现异步:主线程提前释放,后面还需要一个耗时很长的任务。降低了平均响应时间,并发就上来了。主线程执行重要的任务,不重要的考后。发邮件,记日志。与第三方的交互(国家信息的上报)。
线程数的计算:
公式1:线程数=cpu核数 * cpu使用率 * (1+ w/c)。
时间段:1s 0。8s在干活 80%。 0.3/ 2 = 15%。
实际经验:70%,开始预警。
平均负载:top 1min,5min,15min loadaverege
0.7 * cpu核数 2 ,1.4
平均负载 大于 0.7* 核数,要开始排查原因,防止系统恶化。
1.0 * 核数 ,解决。
大于 5 * cpu核数,问题已经很严重了。
1min,5min,15min loadaverege
w/c:等待时间/计算时间。
2 50% 2ms,1ms = 3 , 2 * 0。5 * (1+2/1)=3
公式2:线程数 = cpu核数 * (1-阻塞系数)
计算密集型:0,IO:1。中间?
cpu核数 * (1+ w/c) = cpu核数 /(1-阻塞系数)
阻塞系数 = w/w+c。
其实不重要:
实际中 先定一个数,然后再压测。以 **压测 **为准。谁能看代码 ,算出线程数。他牛B。
2 * cpu核数。
预估用户量,预估并发量,看cpu,看内存,看网络,看io,能不能扛的住。
没必要:
协程 :线程中的线程。java官方并没有推出。一个方法被阻塞,它执行另一个方法。
Quasar。jar包。
压栈 出栈。SuspendExecution 。
进程>线程>协程。
03-三高-并行并发&服务内的更多相关文章
- 03-三高-并行并发&服务集群
三高项目 服务并行&并发 并行和并发 服务的搭建中,并行 并发.----并发. 集群 同质的(同样的配置,运行同样的程序,对外提供同样的服务). 修改同样的存储,可以认. (小建议 ...
- .net core ——微服务内通信Thrift和Http客户端响应比较
原文:.net core --微服务内通信Thrift和Http客户端响应比较 目录 1.Benchmark介绍 2.测试下微服务访问效率 3.结果 引用链接 1.Benchmark介绍 wiki中有 ...
- Python面试简介及并行并发
今天的分享内容大体如下: 一. 面试 1. 什么是面试 2. 优秀的面试 二. Python综述 1. Python设计哲学及版本变迁 2. Python发展现状及其他语言使用场景 3. GIL 4. ...
- Android Service总结03 之被启动的服务 -- Started Service
Android Service总结03 之被启动的服务 -- Started Service 版本 版本说明 发布时间 发布人 V1.0 添加了Service的介绍和示例 2013-03-17 Sky ...
- day34 并行并发、进程开启、僵尸及孤儿进程
day34 并行并发.进程开启.僵尸及孤儿进程 1.并行与并发 什么是并行? 并行指的是多个进程同时被执行,是真正意义上的同时 什么是并发? 并发指的是多个程序看上去被同时执行,这是因为cpu在多个程 ...
- 串行&并行&并发,同步&异步
1. 串行&并行&并发 1.1 串行 这个非常好理解,字面意思,像串成一个串一样,顺序执行 上一个没执行完的话,后面的就必须无条件等待 一般情况就是一个线程里:任务一个接一个执行,类似 ...
- Python 之并发编程之进程上(基本概念、并行并发、cpu调度、阻塞 )
一: 进程的概念:(Process) 进程就是正在运行的程序,它是操作系统中,资源分配的最小单位. 资源分配:分配的是cpu和内存等物理资源 进程号是进程的唯一标识 同一个程序执行两次之后是两个进程 ...
- GC算法之串行并行并发
串行收集器: 用单线程处理所有垃圾回收工作,因为无需多线程交互,所以效率比较高.但是,也无法使用多处理器的优势,所以此收集器适合单处理器机器.当然,此收集器也可以用在小数据量(100M左右)情况下的多 ...
- 您的快递(高并发服务器之poll和epoll)请签收
前言 之前已经介绍过select函数,请参考这篇博客:https://www.cnblogs.com/liudw-0215/p/9661583.html,原理都是类似的,有时间先阅读下那篇博客,以便于 ...
随机推荐
- CSC.exe编译器使用
如何用CSC.exe来编译Visual C#的代码文件 Visual C#是微软公司推出的新一代程序开发语言,Visual C#是微软公司.Net FrameWork框架中的一个重要的组成部分,也是微 ...
- 解决gpg failed to sign the data fatal: failed to write commit object解决方案
今天有位新同事在comit代码的时候一直报这个错误: gpg failed to sign the data fatal: failed to write commit object. 看到网上说gp ...
- while read line [linux] shell 学习
转至:https://blog.csdn.net/qq_22083251/article/details/80484176 循环中的重定向 或许你应该在其他脚本中见过下面的这种写法: while re ...
- Docker入坑系列(一)
Docker入坑系列(一) 引用嘛,当然是来引用别人说的东西啦. Docker 是一个开源项目,诞生于 2013 年初,它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linux ...
- WIN10:全选一个文件夹中的所有文件
- springboot-jta-atomikos多数据源事务管理
背景 我们平时在用springboot开发时,要使用事务,只需要在方法上添加@Transaction注解即可,但这种方式只适用单数据源,在多数据源下就不再适用: 比如在多数据源下,我们在一个方法里执行 ...
- 微服务7:通信之RPC
★微服务系列 微服务1:微服务及其演进史 微服务2:微服务全景架构 微服务3:微服务拆分策略 微服务4:服务注册与发现 微服务5:服务注册与发现(实践篇) 微服务6:通信之网关 微服务7:通信之RPC ...
- 纯css做三角形图标
以前做三角形图标一直是用图片,或者css3旋转,现在才发现原来还有这么简单的三角形 div { border: 10px solid transparent; border-bottom: 10px ...
- 火狐firebug&firepath插件安装
火狐浏览器下掉了firebug和firepath插件,用户即使下载了火狐55以下的版本,也无法查找到这两个插件,以下方法可以解决哦 第1步:下载火狐55以内版本安装包,安装时迅速设置禁止自动更新版本, ...
- Java将彩色PDF转为灰度
本文以Java代码为例介绍如何实现将彩色PDF文件转为灰度(黑白)的PDF文件,即:将PDF文档里面的彩色图片或者文字等通过调用PdfGrayConverter.toGrayPdf()方法转为文档页面 ...