最近的课程涉及的知识比较庞杂、又是临近期末,前面网络相关的笔记都尚未完成写作,后续会尽力补上。
推荐使用网页阅读:https://juejin.cn/post/7100475899241299975
课程视频:https://live.juejin.cn/4354/yc_cake
课程手册:https://juejin.cn/post/7098182433941651492#heading-0
课程PPT:https://bytedance.feishu.cn/file/boxcne8xf0JBAiXgPJ08Vf0IdJg?from=auth_notice&hash=d3d3a460879da375f28cee06d470b5aa
问题:C10K problem(如何处理10k个客户端的连接,单机瓶颈),运维需要停服
基于C10K问题,从纯网络编程技术的角度处理单机高并发访问的问题的方案经历了(阻塞IO、 select
(IO多路复用)、 poll
、 epoll
的演进),这里给出知乎的系列章讲述 epoll
的大致原理:https://zhuanlan.zhihu.com/p/64746509
关于 sokcet
编程,在大致了解流程之后,推荐阅读 《Linux-UNIX系统编程手册》 下册中讲 socket通信
的部分(意外的适合小白阅读)、 《TCP/IP网络编程》 这本书也可以大致浏览,比起大黑书来说,更适合入门网络编程。
单体架构将单机架构做了水平扩容,部署在多台机器上;垂直扩容则在单体架构的基础上,先将其按照业务拆分,以业务为单位,部署在多台机器上(先垂直拆,再水平扩)。
将进程按照的不同功能单元抽象为服务,进一步拆分,定义服务之间的通信标准
问题:数据一致性、服务之间通信、容灾、运维成本高
Redis
、文档存储 Mongo
)JSON
,其可读性更好,方便调试,所以下图中服务的接入都是从HTTP请求发起,来源可能是各种客户端,而经过Gateway之后则使用 rpc通信
,因为其序列化协议往往有着更好的压缩率,如 pb
、 thrift
。并且rpc中间件往往集成了丰富的服务治理能力:熔断、降级、超时等jenkis
)被称为微服务架构2.0,这里放一篇文章作为了解:https://juejin.cn/post/7016612522115465252#comment
IPC
代替 RPC
)笔记内容较为提纲挈领,课程帮助我们开阔了后端架构的视野,但这部分的知识也着实需要结合实践去消化,目前于我来说难度较大,确实只能说是初探架构。