1、数据,只有序列化后,才方便进行网络传输:序列化就是将数据结构或对象转换成二进制串的过程,也就是编码的过程,序列化后,会把数据转换为二进制串,然后可以进行网络传输;反序列化就是在序列化过程中所生成的二进制串转换成数据结构或者对象的过程,将二进制转换为对象后业务才好进行后续的逻辑处理。常见的序列化协议如下
- Protocol Buffer(PB)
- JSON
- XML
- 内置类型(如 java 语言就有 java.io.Serializable)
2、池化技术是非常常见的一个提高性能的技术,池化的核心思想就是对资源进行复用,减少重复创建销毁所带来的开销。复用就是创建一个池子,然后再在这个池子里面对各种资源进行统一分配和调度,不是创建后就释放,而是统一放到池子里面来复用,这样可以减少重复创建和销毁,从而提高性能。而这个资源就包括我们编程中常见到如 线程资源、网络连接资源、内存资源,具体到对应的池化技术层面就是 线程池(协程池)、连接池、内存池等。
——连接池。这个是最常用的,一般我们都要操作 MySQL、Redis 等存储资源,同样的,我们并不是每次请求 MySQL、Redis 等存储的时候就新创建一个连接去访问数据,而是初始化的时候就创建合适数量的连接放到池子里面,当需要连接去访问数据的时候,从池子里面获取一个空闲的连接去访问数据,访问完了之后不释放连接,而是放回池子里面。连接池需要保证连接的可用性,就是这个连接和 MySQL、Redis 等存储是必须要定期发送数据来保证连接的,要不然会被断开。同时我们要针对已经失效(断开)的连接进行检测和摘除。
3、通过队列,就可以使我们的系统能够实现异步处理逻辑、流程削峰、业务模块解耦、柔性事务等多种效果,从而可以完成最终一致性,并且能够极大的提高我们系统的性能。
4、Keepalived 的高可用:例如某案例,Keepalived 每隔几秒会重启 MySQL。
5、清晰的定义:中台是“企业级能力复用平台”。中台建设根本上是为了“弥补创新驱动快速变化的前台和稳定可靠驱动变化周期相对较慢的后台之间的矛盾,提供一个中间层来适配前台与后台的配速问题。”中台的运作机制和关键特征:敏捷、解耦、复用。
中台本质上是把通用的东西剥离、抽象出来,将统一的团队去维护。做中台出于两个目的,一个是成本上,如果每人都独立干的话,成本会成倍的增加。第二,将不同业务下的同样的问题进行归类,交给更专业的人来解决,会做得更好。
当企业发展到一定规模,必然会面临协同和效率的挑战。如果每条业务线、产品线都各自为营,自建技术、数据、财务、安全等能力,就会导致大量重复建设、数据孤岛,增加内部协同和创新的难度。中台的出现恰好为这一问题提供了解决路径,构建统一共享的平台,实现了内部能力的高效复用,提高了创新的速度和深度。
6、管道设备:命名管道允许两个或多个进程相互通信,这些类似于字符设备,但不是将输出发送到设备,而是发送到另一个进程。
套接字设备:套接字设备促进了进程之间的通信,类似于管道设备,但它们可以同时与多个进程通信。
7、信号是对进程的通知,告诉它发生了什么事情。
- 用户可以输入一个特殊的终端字符(Ctrl-C)或(Ctrl-Z)来终止、中断或挂起进程
- 硬件问题发生时,内核想要通知进程
- 软件问题发生时,内核想要通知进程
- 进程通信的方式
8、消息队列有两种模式,点对点模式和发布/订阅模式。
- 点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除)的优点就是速度容易自己控制,想什么时候获取就什么时候获取,获取的速度也可以自己把控。但它的缺点就是它必须有一个监控队列的一个轮巡,相对来说比较耗资源,特别是长时间没有数据的时候。
- 发布/订阅模式(一对多)的速度不是客户端来决定的,因为发布订阅模式消息是推送过去的,类似于公众号,消息是推送给你的。它的好处就是不用开一个监控,因为消息队列这边只要来消息了,我主动的推送给你,客户端这边不用弄一个监控在这一直看着有没有数据来。
大数据领域的实时计算、日志采集等场景,用 Kafka 是业内标准的。Kafka 是消息队列中的一种:Kafka 更多的是用做流式处理,要注意的是:无论是 Kafka 集群还是 consumer 都依赖于 zookeeper 集群保存一些 meta 信息,来保证系统可用性。第一个是 Kafka 集群,topic;第二个就是 consumers 节点,这个节点下保存是不同的 consumer 组,它是 topic 下某一个分区的节点,就是它对于一个分区它有一个 offset,如果有三个分区就有三个 offset。对于客户端请求只能 leader 来处理,follow 都是备份用的。
9、