单一服务节点集群(一个用户一个节点)

集群中的服务器服务的对象是固定的,该集群中的服务器不需要同步服务对象的信息,都是自行单独处理。
缺点也就显而易见,那就是其中一台服务器丢失,服务的对象也就得不到服务,数据也丢失了。
信息共享节点集群(所有节点连接到一个公共的信息池)

所有服务器的信息都从同一个数据库中获取和写入,操作数据库的时候必须加锁访问,避免并发问题。
可以看到我们的服务器很多,明显提升集群的计算能力(CPU)。
如果你的压力是在磁盘 I/O ,数据库吞吐能力上,由于只有一台公共数据库,压力会非常大,此方案就不合适了。
还有,存在单点故障问题,如果数据库崩溃就无法提供服务了,可用性不足。
信息一致节点集群(数据信息是一致的)

有多服务器的计算能力,单一数据库的单点故障和压力过大问题。
多数据库需要通过同步来解决数据一致性问题,而同步必然存在延迟,关键是延迟是否在接受范围以内。
- 强一致性:更新操作完成后,任何多个后续进行访问时都会返回最新的值,就是用户刚提交就能看到更新了的数据,这对用户是最友好的。但根据 CAP 理论,这势必也要牺牲可用性。
- 最终一致性:要求系统中数据副本最终能够一致,而不需要实时保证数据副本一致。
分布式系统

把一个业务拆分成多个子业务,部署在多个不同的服务器提供服务,一旦处理该业务的服务器出现问题,那么该业务就无法实现了。
分布式是一种工作方式。就是把所有的功能、模块拆分成不同的子项目,部署在多台不同的服务器上,这些子项目相互协作共同对外提供服务。
微服务系统
微服务架构是在前面分布式架构(SOA架构)上进行进一步的扩展和拆分。在微服务架构下,一个大的项目拆分为一个个小的可独立部署的微服务,每个微服务都有自己的数据库。原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用,这些小应用之间通过服务完成交互和集成。
服务彻底拆分,各服务独立打包、独立部署和独立升级。每个微服务负责的业务比较清晰,利于后期扩展和维护。微服务之间可以采用 REST 和 RPC 协议进行通信。
分布式和微服务架构的区别
总的来说,分布式主要是有多个服务器,而微服务主要注重服务的拆分,微服务并不一定是部署在多个服务器上,也可能只是在一个服务器上(基本很少见)。即分布式是多节点多模块,而微服务有可能是单节点多模块,但通常也是多节点多模块的。
微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上也可以是同一个服务器。
分布式服务架构强调的是服务化以及服务的分散化,而微服务则更强调服务拆分的专业化和精细分工。分布式也可以理解为属于微服务,但可能服务拆分没那么细致,而微服务架构通常也是分布式的架构。
内部并发
进程:多进程中,一个进程崩溃不会影响其他进程
线程:多线程,在开发中倒是非常常见,比进程更轻量,如果某个线程崩溃可能导致其他线程出现问题
协程:C++20 支持协程,网上也有很多协程库,追求更高的性能可以考虑协程
参考文章
https://www.cnblogs.com/wenxuehai/p/16156219.html
https://blog.csdn.net/qq_34246965/article/details/131134555