三高项目-服务内并发

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-三高-并行并发&服务内的更多相关文章

  1. 03-三高-并行并发&服务集群

          三高项目 服务并行&并发 并行和并发 服务的搭建中,并行 并发.----并发. 集群 同质的(同样的配置,运行同样的程序,对外提供同样的服务). 修改同样的存储,可以认. (小建议 ...

  2. .net core ——微服务内通信Thrift和Http客户端响应比较

    原文:.net core --微服务内通信Thrift和Http客户端响应比较 目录 1.Benchmark介绍 2.测试下微服务访问效率 3.结果 引用链接 1.Benchmark介绍 wiki中有 ...

  3. Python面试简介及并行并发

    今天的分享内容大体如下: 一. 面试 1. 什么是面试 2. 优秀的面试 二. Python综述 1. Python设计哲学及版本变迁 2. Python发展现状及其他语言使用场景 3. GIL 4. ...

  4. Android Service总结03 之被启动的服务 -- Started Service

    Android Service总结03 之被启动的服务 -- Started Service 版本 版本说明 发布时间 发布人 V1.0 添加了Service的介绍和示例 2013-03-17 Sky ...

  5. day34 并行并发、进程开启、僵尸及孤儿进程

    day34 并行并发.进程开启.僵尸及孤儿进程 1.并行与并发 什么是并行? 并行指的是多个进程同时被执行,是真正意义上的同时 什么是并发? 并发指的是多个程序看上去被同时执行,这是因为cpu在多个程 ...

  6. 串行&并行&并发,同步&异步

    1. 串行&并行&并发 1.1 串行 这个非常好理解,字面意思,像串成一个串一样,顺序执行 上一个没执行完的话,后面的就必须无条件等待 一般情况就是一个线程里:任务一个接一个执行,类似 ...

  7. Python 之并发编程之进程上(基本概念、并行并发、cpu调度、阻塞 )

    一: 进程的概念:(Process) 进程就是正在运行的程序,它是操作系统中,资源分配的最小单位. 资源分配:分配的是cpu和内存等物理资源 进程号是进程的唯一标识 同一个程序执行两次之后是两个进程 ...

  8. GC算法之串行并行并发

    串行收集器: 用单线程处理所有垃圾回收工作,因为无需多线程交互,所以效率比较高.但是,也无法使用多处理器的优势,所以此收集器适合单处理器机器.当然,此收集器也可以用在小数据量(100M左右)情况下的多 ...

  9. 您的快递(高并发服务器之poll和epoll)请签收

    前言 之前已经介绍过select函数,请参考这篇博客:https://www.cnblogs.com/liudw-0215/p/9661583.html,原理都是类似的,有时间先阅读下那篇博客,以便于 ...

随机推荐

  1. WPF中使用MVVM进行multibinding

    背景描述:在Number1和Number2文本框中输入数字后,在Answer文本框中会按照下图所示显示. xaml代码: <Window.Resources> <local:MyVa ...

  2. MyEclipse 启动tomcat本地服务,debug模式,代码一直不同步

    今天写代码遇到一个问题,上午还能正常运行的代码,在eclipse中显示正常,但在游览器中就出现了差异,在网上找了很多方法: 1.add and remove项目,清理tomcat部署目录下的项目,清理 ...

  3. 5.注入内部Bean

    我们将定义在 <bean> 元素的 <property> 或 <constructor-arg> 元素内部的 Bean,称为"内部 Bean". ...

  4. 使用kind快速搭建本地k8s集群

    Kind是什么? k8s集群的组成比较复杂,如果纯手工部署的话易出错且时间成本高.而本文介绍的Kind工具,能够快速的建立起可用的k8s集群,降低初学者的学习门槛. Kind是Kubernetes I ...

  5. C语言每日一题

    66. 加一 /** * Note: The returned array must be malloced, assume caller calls free(). */ /* 从后向前(从个位)开 ...

  6. 『现学现忘』Docker基础 — 14、Docker的卸载

    目录 1.查询Docker安装过的包 2.卸载Docker软件包 3.删除残留目录 4.验证是否卸载 5.20版本Docker卸载(官方文档) 1.查询Docker安装过的包 执行yum list i ...

  7. Android 应用框架层 SQLite 源码分析

    概述   Android 在应用框架层为开发者提供了 SQLite 相关操作接口,其归属于android.database.sqlite包底下,主要包含SQLiteProgram, SQLiteDat ...

  8. tp6微信公众号开发者模式基础消息

    官方文档 https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_standard_messages ...

  9. java入土---markdown使用技巧

    markdown使用技巧 标题 "#" 为一级标题 "##" 为2级标题 可一直往下曾增加,最多六级标题 字体 加粗 **加粗** 加粗 倾斜 *倾斜* 倾斜 ...

  10. 变量、变量作用域、常量final、变量的命名规范

    变量 变量是什么:就是可以变化的量! Java是一种强类型语言,每个变量都必须声明其类型. Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域. 注意事项: 每个变量都有类型,类 ...