首页 > 其他分享 >读《凤凰架构》感悟

读《凤凰架构》感悟

时间:2024-02-06 11:35:39浏览次数:30  
标签:感悟 java Kubernetes 网站 代码 AWS 实现 架构 凤凰

本书提供了一个完整的网站代码,网站名字是:凤凰书店。该网站是一个网上卖书的站点。类似于互联网最早期的亚马逊书城、当当网。一个传统的互联网网站。

值得关注的是该书提供的不仅仅是勉强把这个网站实现出来的代码,而是用非常好的标准和风格实现了,并且实现了5套,让读者观察5套网站代码的区别,去深刻体会网站后台架构的演进。(很多已有的互联网网站其实是勉强实现出来的,后台代码已经腐坏了,由公司的救火英雄们心力交瘁的维护着),如果能把这5套代码摸透,那也许你能带领公司构建一个简洁且稳定的网站,从容的工作而不做救火英雄。

5套代码是用java实现的,这是因为过去10年的网站后台还是以java代码为主。但5套代码分别是互联网不同发展时期的产物,正如书中所说,架构不是一成不变的,而是不断演变的。5套代码各有特点,在不同的时期,公司会选择不同的架构,来满足业务需求。

凤凰书店的功能在现在看来并不复杂,标准的用户注册登录、浏览书籍和购买。第1套代码中,使用java Spring Boot就实现了,只需要一个java进程,也许互联网早期的公司就是这么实现的,足以证明这个网站功能简单。但随着互联网的发展,在单个进程上存在性能和功能扩展问题。于是有了后面的实现架构。

第2套代码中,使用了java Spring Cloud实现,该实现把单进程里面的认证授权、用户账号、商铺信息、交易服务拆分成不同的服务进程,部署到多个服务器上,解决了单服务器性能扩展的问题,但引入了分布式架构的复杂度(配置中心、服务发现、服务治理、负载均衡、HTTP协议),运维难度急剧加大。好在还全是java实现的,公司的java程序员还能搞得定,这也算是java版的微服务架构了。

2017年Kubernetes赢得统治地位,Kubernetes以pod的方式讲所有服务进程分发到不同的机器上运行,极大的降低了运维人力,并提供了异构能力,不再需要全部都是java实现,一些中间件可以以pod方式部署其他语言的服务进程。第3套代码则采用了Kubernetes的实现,当然每套实现业务代码基本都一样,不一样的是代码组织和运维的方式。尽管降低了运维成本,但Kubernetes缺乏一些java Spring Cloud的能力,例如认证授权。在使用Kubernetes实现时,Kubernetes没有的功能也需要把原有的java Spring Cloud功能搬迁过来到pod中运行。

随后k8s引入了Istio,解决了Kubernetes的欠缺,把基础设施全部移到业务代码之外。第4套代码则采用Istio的方式部署,几乎彻底移除了java Spring Cloud实现中的基础设施部分,只保留了业务代码,就可以部署到Istio环境,享受Istio提供的基础设施。

最后提供了第5套代码,无服务框架,准确的说作者没有提供代码,因为是无服务。书中给出的示例是云计算老大AWS的lambda。所谓无服务,其实是AWS已经帮我们把Kubernetes和Istio部署在云端了,包括redis、mysql这些常用基础组件,在AWS上也能直接使用,相当于把运维能力外包给AWS,从而省却了运维成本,专注业务开发,即使是一个开发人员也能独自开个公司做个稳定的网站了,只需按流量给AWS付费即可。

总结一下互联网行业,如果是做个信息网站,现在成本非常低,租用AWS就可以获得最优秀的基础设施运维能力,数据持久化、高速缓存、串行互斥、发短信等一系列基础功能都可以直接获得,自己只需要实现业务代码即可,而业务代码又被AWS的lambda抽象成一个个无状态函数,或者说一个个http接口。我们只需要为自己的业务编写这部分代码,就可以完成一个网站,要是担心前端没有流量,还能接入微信小程序、公众号这样的终端。研发成本低到一个人也能完成,就像抖音短视频,30年前要做内容影视,需要一个很大的团队携带庞大的资金才能完成,现如今一个人就可以是一个团队,拍出很多内容影视。

正如书中所说,整个团队只需要少数两三个人熟悉全貌,剩下的大部分人只需要使用最简单的方式开发业务逻辑,这个团队就可以运作的很好,而AWS云厂商,则充当了团队中掌握全貌的人。当然,如果不是纯粹的互联网业务,涉及到一些自己的硬件,不同于互联网C/S架构的系统构建,无法使用AWS云服务的部分,才需要其他定制的设计和实现。

标签:感悟,java,Kubernetes,网站,代码,AWS,实现,架构,凤凰
From: https://www.cnblogs.com/xjjsk/p/18009438

相关文章

  • 分层架构
    分层架构(layeredarchitecture)是最常见的软件架构,也是事实上的标准架构。如果你不知道要用什么架构,那就用它。这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。虽然没有明确约定,软件一定要分成多少层,但是四层的结构......
  • 微核架构
    微核架构(microkernelarchitecture)又称为"插件架构"(plug-inarchitecture),指的是软件的内核相对较小,主要功能和业务逻辑都通过插件实现。内核(core)通常只包含系统运行的最小功能。插件则是互相独立的,插件之间的通信,应该减少到最低,避免出现互相依赖的问题。 优点良好的功能延......
  • 事件驱动架构
    事件(event)是状态发生变化时,软件发出的通知。事件驱动架构(event-drivenarchitecture)就是通过事件进行通信的软件架构。它分成四个部分。 事件队列(eventqueue):接收事件的入口分发器(eventmediator):将不同的事件分发到不同的业务逻辑单元事件通道(eventchannel):分发器与处理......
  • 微服务架构
    微服务架构(microservicesarchitecture)是服务导向架构(service-orientedarchitecture,缩写SOA)的升级。每一个服务就是一个独立的部署单元(separatelydeployedunit)。这些单元都是分布式的,互相解耦,通过远程通信协议(比如REST、SOAP)联系。  微服务架构分成三种实现模式。RE......
  • 云架构
    云结构(cloudarchitecture)主要解决扩展性和并发的问题,是最容易扩展的架构。它的高扩展性,主要原因是没使用中央数据库,而是把数据都复制到内存中,变成可复制的内存数据单元。然后,业务处理能力封装成一个个处理单元(prcessingunit)。访问量增加,就新建处理单元;访问量减少,就关闭处理单元......
  • SDN关键技术及架构
    SDN是软件定义网络的简称,在SDN中,网络的控制面与数据面分离,并且通过中心控制器进行统一管理。SDN的主要目标是提高网络的灵活性、可编程性和智能化程度,从而更好地适应不断变化的业务需求。SDN可以通过控制器来管理网络设备,控制网络流量和优化网络服务质量。SDN还可以使网络更加安全......
  • 金融行业多端支付系统强一致性架构设计(下)
    2支付能力的快速接入支付快速接入:设计流程主要目标:屏蔽接入第三方支付平台的复杂度,为业务提供便捷接入的支付的能力。整体交互逻辑:用户下单后,业务线生成生订单的同时请求支付系统,返回携带加密后的收银台链接,业务前端渲染收银台H5链接,之后用户操作都直接与支付系统直接交互,不再经过......
  • 《程序是怎样跑起来的》第五章,第六章读书感悟
    第五章一,主要内容1,主要介绍了计算机的输入输出设备,包括键盘、鼠标、显示器、打印机、硬盘和网络等,以及它们与计算机主机之间的接口和通信方式。2,介绍了输入输出设备与计算机主机之间的接口和通信方式,包括USB、HDMI、SATA等接口标准,以及中断、DMA等通信方式。二,读书感悟总......
  • 《程序是怎样跑起来的》第三章,第四章读书感悟
    第三章:一、主要内容1,主要讲了计算机出错的原因,如十进制与二进制转化不精确的原因2,介绍了浮点数,即只用符号、尾数、基数和指数这四部分来表示的小数,更清楚了什么是精度浮点数和单精度浮点数。3,讲述了如何避免计算机出错的两种方法:回避策略及无视这些错误,把小数化成整数计算;在进......
  • 《程序是怎样跑起来的》第一章,第二章读书感悟
    第一章:一、主要内容第一章主要介绍了计算机的基本构成和运行原理。作者从一台简单的计算机模型入手,逐步介绍了CPU、内存、输入输出设备等基本组件的功能和相互关系。一、读书感悟看完第一章,我对计算机的基本构成有了一定的理解。知道了计算机是由多个组件组成的,这些组件之间......