1.2.2 大型网站技术和java中间件-分布式系统的基础知识-线程和进程的执行模式

1.2.2 大型网站技术和java中间件-分布式系统的基础知识-线程和进程的执行模式

 

1.单进程内的多线程难度远高于一个单线程。

2.多线程中需要处理线程间的通信,做好并发控制,做好线程协调工作

 


1.2.2.1阿姆达定律

 

P指的是程序可并行部分在单核上的执行时间占比,N表示cup处理器个数(总核心数),S(N)指N个处理器相对在单核处理的速度提升比。

N

—> 如果p是0.5 计算出提升的速度是2 

—> 如果p是0.2 速度提升的是1.25


 

1.2.2.2多线程模式 -> 互不通信

多个线程在系统中并发执行。如果线程间不需要处理共享数据,也不需要动作协调,就会非常简单

 


1.2.2.3多线程模式 ->  基于共享容器协同

1.需要在多个线程找那个对共享数据进行处理(比如生产者和消费者)

  —>这个队列就是多个线程会共享的一个容器或者数据对象,多线程会并发访问这个类 

2.对于多线程同时访问同一份数据,需要保护和控制来保证访问的正确性。

  对于存储数据的容器或者对象,有线程安全或者不安全说法。

  对于不安全的数据,通过加锁或者copy on write来控制并发 

    ->对于读写比例很高的采用读写锁而不是简单的互斥锁

 


1.2.2.4通过事件协同多线程模式

线程之间存在着协调的需求(eg. A,B两个线程,B线程需要等到A线程产生某个状态才能继续工作,这个场景,就是线程协调)

  ->线程之间还会传递数据,因为线程共用进程的数据->线程之间的传递数据就会相对容易一些

  ->进程间的通信手段,在多线程之间都可以使用

入下图所示,当右侧线程执行到某个步骤,需要等待一个事件,这个事件由左侧线程产生并通知,右侧线程一直阻塞到事件通知到才会继续执行

 


1.2.2.5 多进程模式

1.多线程和多进程最大的不同:

  1.1 共享内存的方式不同

      多个线程共享同一个进程空间 : 线程是属于进程的,一个进程内多个线程共享进程的内部空间;

      多个进程内存空间是独立的: 多个进程通过内存共享,交换数据的访问来相互协调

  1.2 协调方面

      进程直接的通信,协调,时间通知,互斥锁方面和多线程不同(不同平台的支持方式不同)。 

  1.3 资源控制方面

      多进程对于多线程,资源控制会更容易实现

      多进程中的单个进程有问题,不会造成整体的不可用

      多进程比多线程复杂,多进程之间的共享数据代价比多线程大得多,涉及到序列化和反序列化

 

分布式系统是近似把单机多线程变成多机多线程

单机到多机:

    变化1:

         原来在单机OS上支持的功能现在需要另外去实现

    变化2:

         当单个机器出现问题时,如果处理的好,就不会影响整体的机器

         (单线程或者单进程多线程遇到OS或者自身问题,会导致服务不可用

         (多进程中,如果OS问题,也会功能不可用;如果是某个进程问题,处理的好,也可能保持服务正常

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值