Code for Life, AI for Future
什么是CAP原理年的时候,Eric Brewer 教授提出了 CAP 猜想,2年后,被 Seth Gilbert 和 Nancy Lynch 从理论上证明了猜想的可能性,从此,CAP 理论正式在学术上成为了分布式计算领域的公认定理。并深深的影响了分布式计算的发展。CAP 理论告诉我们,一个分布式系统不可能同时满足一致性(C:Consistency),可用性(A: Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中的2个。 td {white-space:nowrap;border:1px solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}选项描述C(Consistence)一致性,指数据在多个副本之间能够保持一致的特性(严格的一致性)。A(Availability)可用性,指系统提供的服务必须一直处于可用的状态,每次请求都
锁在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。而同步的本质就是通过锁实现。如 Java 中 synchronize 是在对象头设置标记,Lock 接口的实现类基本上都只是某一个 volitile 修饰的 int 型变量,其保证每个线程都能拥有对该 int变量 的可见性和原子修改,linux 内核中也是利用互斥量或信号量等内存数据做标记。Mutex互斥量pthread中,mutex保护了临界区,一个时刻只有一个线程在临界区活动。mutex分为两种,可重入(Reentrant)和非可重入。Condition Variable条件变量条件变量,顾名思义就是一个或多个线程等待某个布尔表达式为真。即等待别的线程“唤醒”它。而这个管理临界区,并控制布尔表达式为真的进程,就叫做管程(Monitor)。java的Synchronized、以及Object的wait() notify() notifyAll() 都是条件变量,都是管程。通过java提供的Synchronized、ReentrantL
本期主题:函数式编程引言:函数式编程,其实是一种“编程范式”。那函数式编程与我们之前遇到的过程式编程,以及面向对象编程又有什么区别,使用过程中又该如何选择。所以,我们需要了解函数式编程(Functional Programming)是什么,它怎么来的,如果真的好用为什么现在没有被广泛使用,闭包、高阶函数、惰性计算、柯里化、无副作用都是什么含义。起源一个哲学问题:什么是完美?现实主义者会认为没有完美的存在,因为总有一些我们无法看到的瑕疵。那么问题来了,如果不存在“完美”,那又如何理解“完美”这个词的定义呢。这样就有了数学的本质,数学可以画出一个完美的圆,数学用定律描述宇宙。然后就不得不提到一个数学家Alonzo Church(他的三个哥们:艾伦·图灵、约翰·冯·诺依曼和库尔特·哥德尔),Alonzo Church 与其他人合作开发了一种称为lambda 演算的正式系统,λ是基于将其他函数作为参数并返回函数作为结果的函数。λ的发展却是由于二次世界大战,陆军聘请了大量数学家来不断计算求解大炮弹道射击表所需的微分方程。1949 年,电子离散变量自动计算机 ( EDVAC ) 面世,冯·诺依曼架
架构图:异步复制首先确保主从上都安装了相同版本的mysql。(附:mysql的安装)在主库上,新增一个用户从库查询的账号,并赋权:create user 'repl'@'%' identified by '123456';GRANT ALL PRIVILEGES ON . TO 'repl'@'%' WITH GRANT OPTION;GRANT REPLICATION SLAVE ON . To 'repl'@'%';flush privileges;修改主库my.cnf配置,开启bin-log,并设置server-id的值,重启log-bin=/acdata/mysql/log/mysql-bin.logserver-id=1修改从库my.cnf配置,设置server-id值,不可与主库重复server-id=2dump主库数据到从库恢复(此步骤操作时,建议停掉主库执行)./mysql/bin/mysqldump -uroot -p --all-databases > /acdata/20211020.sql登录从库mysql> source /acdata/20211
高并发三要素系统设计人员的首要责任和终极目标,我们需要考虑三个系统的核心要素分别是系统的性能、可用性和扩展性。1、高性能我们通常以吞吐量,响应时间来衡量一个系统的性能状况。当我们的请求响应时间在200ms内对于用户来说是无感知的,在1s内还属于可接受范围,当超过1s用户体验就开始明天变差。系统性能度量指标平均响应时间平均响应时间=时间段/处理的总请求量,一般来说平均时间的参考意义不大,因为平均时间往往会因为少数的慢请求而导致整个平均时间加大,就像我们的平均工资一样会因为几个富豪就拉高了整体的平均工资水平。最大响应时间一般只有系统严格的硬性标准要求最大响应时间为多少才会采用最大响应时间最为衡量系统性能的标准,而一般的系统都不会使用此方式。分位响应时间比如9分位的请求值是500ms 就是指系统90%的请求是在500ms内的,通常我们根据系统的要求不同而指定不同分位值的标准,一般要求比较高的系统都会要求在99分位值的请求控制在200ms内。提升系统性能方式提升机器配置增加带宽让网络通道可允许更大数量的并发请求,增加CPU 可以提升并行处理任务的能力,增加内存可以增加读取数据量。提升单次请求响
康叔的AI全栈工坊