凤凰架构总结

news/2024/10/19 23:42:37
     

 

          重温了一遍周志明老师的《凤凰架构》,一方面是加深记忆一下里面的知识点,另外就是做个记录总结,方便后面忘记了在看。

           全书一共有十六个章节,每个章节都相对独立又和后文有些关系。个人总结主要是围绕着微服务、架构演进以及容器编排等技术的发展来讲述的。很详细也很透彻,第一遍读的时候因为很多概念不是很清楚,比较耗时。读了后再回过头来看时候,发现顺利了不少。

         第一章服务架构演进,从原始分布式时代到单体架构历史,SOA时代以及微服务时代,以及当前的云生无服务时代这些概念。主要是需要清楚里面的几个概念:

         SOA:最早在1994年提出,当时不具备发展提交。直到2006年OSOA联盟的倡议与支持下,成立了Open CSA 组织。里面提出了很多的概念、思想都在今天的微服务中找到对应的身影,譬如服务之前的松散耦合、注册、发现、治理、隔离、编排等。

       微服务时代:微服务最早2005年提出,指的是专注于单一职责的、和语音无关的细粒度web服务。但是一直到2014年,和SOA划清界限之后,才真正的崛起了。 现代的概念是:微服务是一种通过多个小型服务组合来构建单个应用的架构风格,这些服务围绕业务能力而非特定的技术标准来构建,各个服务可以采用不同的编程语言、不同的数据存储技术,运行在不同的进程之后。

      后微服务时代:主要是以docker为代表的容器化技术的崛起,以及kubernetes成为容器编排解决的首要选择,标志着后微服务时代的开启。以kuberneters在集群中对外提供服务,以虚拟化容器技术对外提供方案的容器编排技术的完善和发展,以及服务网格(Service mesh)等技术的引入,微服务的概念也逐渐越加成熟。

    无服务时代:主要是以云原生为主的元计算方面。也是作者预测以后云计算使用的一种主要的形式。

     另外需要说下Sidecar Proxy的边车代理模式,这个是服务网格(Service mesh)里面用到的一种模式,下面很多章节都有介绍。

     Sidecar Proxy(边车代理):在虚拟化场景中,边车指的是通信代理服务器,以类似网络安全里面中间人共计的方式进行流量劫持,在应用毫无感知的情况下,悄然接管应用所有对外通信。这个代理除了实现正常的服务间通信为(称为数据平面通信),还接收来自控制器的指令(称为控制平面通信),实现熔断、认证、度量、监控以及负载均衡等各种附加功能。 我理解就是不需要像传统方式那样,比如说一个java语音的程序,但是需要再Python或者go平台运行,传统方式需要一个jar包或者http之类的方式去调用后运行,但是这个功能交由系统级别来实现了。

 

      第二章主要是介绍了远程服务调用(RPC)以及REST风格的设计。这个章节介绍了RPC的历史,概念有很多,毕竟RPC的历史也有几十年了。这个我理解需要了解的主要是知道现在一些主流的RPC吧,比如RMI(SUN/Oracle)、gRPC(Google)、Motan1/2(新浪)、Finagle(Twitter)、brpc(百度/Apache)、NetRemoting(微软)、Arvo(Hadoop)、JSON-RPC2.0)(JSON-RPC)等一些常见的协议和框架。

     RESTFUL概念:restful和RPC的概念不尽相同,只是有些相似。本质上不是一类东西。 RPC是一种远程服务调用协议,而restful没有协议。虽然都是远程调用,REST是面向资源的思想,REST只是一种风格,不是一种规范,没有像RPC一样的协议

    以作者举例来说明: 

    去医院预约

    如果只是通过RPC调用,属于0级
   如果定义了资源,比如能获取指定日期的预约结果,即拿到所有医生的信息 是一级
  如果除了预约,还能取消、更换时间、以及结果能够根据统一code码进行判断的,并且考虑授权之类的,比如vip才能预约的,则称为二级
  如果请求了一个,能返回所有的,则称为三级

   restful 按照服务接口 rest的程序 从高到低,分为3级:

  0级: 完全不REST

  1级: 引入资源的概念

  2级:统一引入接口,映射到http协议的方法上

 3级: 超媒体控制,主要体现在返回信息里面包含所有的需要的信息,能做到服务端和客户端的api解耦。

   另外就是restful的不足: rest和http 完全绑定,不适合高性能传输的常见、不利于事务、缺乏对资源批量处理等

 

  第三章 主要是事务处理,这个章节是一些互联网公司经常面试的东西。

  ACID(原子性、隔离性、持久性、一致性):事务的基本概念

   原子性和持久性:默认是通过commit log来保证,但是commit log 有一个先天缺陷: 对数据的修改都必须发生在事务提交后,如果磁盘i/o足够空间,都不允许事务提交前修改磁盘数据,导致对提升数据库性能不利。 一种解决方案是: 增加Undo log的日志类型,记录修改数据位置以及修改的值,以便在事务回滚或者崩溃crash恢复时候根据undo log 对写入数据进行擦除。还有就是是 steal 和 force的一些概念

  隔离性:通过数据库的读锁、写锁、范围锁 来解决,针对隔离级别里面序列化、可重复读、读已提交和读未提交。另外在可重复读和读已提交 还有MVCC机制来进行优化的场景,通过增加版本号的概念来进行。

   全局事务: 为了解决分布式事务一致性问题,引入XA的处理事务架构。引入了全局的事务管理器,俗称2阶段提交和3阶段提交。

   分布式事务:当前业界主流的。首先是CAP理论:即在分区容忍性下面,一致性(Consistency)和  可用性(Availability)只能保证一个。 针对分布式事务,有几种常用的方案:

    队列:通过队列的方式,达到最终一致性

  TCC: tyr-confirm-console,一般用的比较多的场景就是解决秒杀保证库位不会出现小于0的问题,超售的问题。缺点是 代码侵入强

  SAGA事务:可以参考阿里开源的seata

 

 第四章主要是缓存、域名解析、路由以及CDN分发、负载均衡的一些知识

   主要是记一下CDN以及负载均衡的一些知识: 

   CDN 作用: 加速静态资源分发、安全防御、 协议升级(使用SSL证书)、状态缓存、修改资源、访问控制、诸如功能

  负载均衡可以在数据链路做负载均衡、也可以在网络层和应用层做负载均衡,负载均衡算法可以使用加权、轮训、随机、一致性hash、最少连接数等方式

  缓存的一些知识点:

   吞吐量:使用OPS(每秒操作数)来衡量,反应了对缓存进行并发度、写操作的效率。

  命中率: 成功从缓存返回结果次数与总请求次数的比值。

   介绍了 Caffeine环形缓存(Ring buffer)的实现原理:以及缓存的淘汰策略:FIFO(优先淘汰)、LRU(优先淘汰最久未被访问的数据)、

 

 

    

      

    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/72618.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

三星固态硬盘不识别数据恢复

当三星固态硬盘出现不识别数据的情况时,可以尝试以下方法来恢复数据: 一、检查硬件连接与兼容性 检查连接:确保固态硬盘的连接正确,包括SATA接口、电源连接等,如有松动或接触不良,需重新连接。 系统兼容性:部分旧系统可能对固态硬盘的兼容性不佳,建议将系统升级。 二、…

博通账户乱码

本文来自博客园,作者:花之旭,转载请注明原文链接:https://www.cnblogs.com/huazhixu/p/18471788

读数据工程之道:设计和构建健壮的数据系统11云经济学

云经济学1. 部署位置 1.1. 当公司在决择在何处搭建技术栈时会有数不清的选择1.1.1. 除非有令人信服的理由,否则不要选择复杂的多云或混合云策略1.2. 本地1.2.1. 当越来越多的初创公司在云技术下诞生,本地系统仍是默认的公司创立地…

豪气冲天,ThreadX联盟成立,为世界上第一个安全认证的开源 RTOS 保持增长和创新

ThreadX交接看来已经进入尾声,Eclipse基金会正式推出ThreadX联盟,并创建新的域名 https://threadxalliance.org/【欢迎加入 ThreadX 联盟】ThreadX联盟是Eclipse基金会发起的一项全球性倡议,旨在维持和推广Eclipse ThreadX实时操作系统(RTOS)及其生态系统。全球已有超过1…

TowardsDataScience-博客中文翻译-2021-四十-

TowardsDataScience 博客中文翻译 2021(四十)原文:TowardsDataScience Blog 协议:CC BY-NC-SA 4.0从数据科学访谈到开源 GitHub 项目原文:https://towardsdatascience.com/from-a-data-science-interview-to-an-open-source-github-project-87c228902968?source=collecti…

TowardsDataScience-博客中文翻译-2021-七十七-

TowardsDataScience 博客中文翻译 2021(七十七)原文:TowardsDataScience Blog 协议:CC BY-NC-SA 4.0使用数据科学节省资金原文:https://towardsdatascience.com/saving-money-using-data-science-f7f6d229dd90?source=collection_archive---------44--------------------…

TowardsDataScience-博客中文翻译-2021-七十二-

TowardsDataScience 博客中文翻译 2021(七十二)原文:TowardsDataScience Blog 协议:CC BY-NC-SA 4.0图片中的概率公理原文:https://towardsdatascience.com/probability-axioms-in-pictures-2de96880c868?source=collection_archive---------32-----------------------通…

116、SAP导出表结构并保存到Excel,方便写代码时复制粘贴

01. 在SE38模块,创建一个程序 02.ABAP代码如下:*&---------------------------------------------------------------------* *& Report Z_TIANPAN_20190716_HELLO *&---------------------------------------------------------------------* *& *&----…