cpu缓存机制:为什么要设置 CPU 亲和性绑定 CPU 呢?理论上进程上一次运行后的上下文信息会保留在 CPU 的缓存中,如果下一次仍然将该进程调度到同一个 CPU 上,就能避免缓存未命中对 CPU 处理性能的影响,从而使得进程的运行更加高效。预取指令likely。
用户级线程:只能只能参与该进程的处理器资源,线程切换在用户空间,开销极底,但是如果触发了阻塞的系统调用,会阻塞整个进程。
内核级线程:充分利用了多核cpu的优势,开销跟进程调度差不多,线程表是存放在操作系统固定的表格空间或者堆栈空间里,所以内核级线程的数量是有限的。
Linux所谓的线程其实是与其他进程共享资源的轻量级进程。
为什么说是轻量级呢?在于它只有一个最小的执行上下文和调度程序所需的统计信息,它只带有进程执行相关的信息,与父进程共享进程地址空间,轻量级进程基于内核线程实现。
协程的调度完全由用户控制,协程拥有自己的寄存器上下文和栈,协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作用户空间栈,完全没有内核切换的开销。
微服务
与微服务相对的另一个概念是传统的「单体式应用程序」
优点:
技术异构性、隔离性、可扩展性、简化部署和易优化
微服务管理:服务注册与发现、服务监控。服务容错「熔断、隔离、限流和降级、超时机制」和服务安全。