这是一部以"如何构建一套可靠的分布式大型软件系统"为叙事主线的开源文档,是一幅帮助开发人员整理现代软件架构各条分支中繁多知识点的技能地图。文章《什么是"凤凰架构"》详细阐述了这部文档的主旨、目标与名字的来由,文章《如何开始》简述了文档每章讨论的主要话题与内容详略分布,供阅前参考。
如今我所写的文章只是用来我自己学习大佬写的凤凰架构,加深印象所用
第一篇、什么是凤凰架构??--如何用一些不可靠的部件来构造出一个可靠的系统。
认细胞等这些零部件可能会出错,某个具体的零部件可能会崩溃消亡,但在存续生命的微生态系统中一定会有其后代的出现,重新代替该零部件的作用,以维持系统的整体稳定。在这个微生态里,每一个部件都可以看作一只不死鸟(Phoenix),它会老迈,而之后又能涅槃重生。
1、架构的演进 软件架构风格从大型机(Mainframe),到原始分布式(Distributed),到大型单体(Mo
nolithic),到面向服务(Service-Oriented),到微服务(Microservices),到服务网格
(Service Mesh),到无服务(Serverless)……技术架构上确实呈现出“从大到小”的发展趋
势。
2、架构师的视角
有哪些主流的解决方案和行业标准做法,各种方案有什么优点、缺点,不同的解决方法会带来
什么不同的影响,等等。以达到将“架构设计”这种听起来抽象的工作具体化、具象化的目
的。
3、分布式的基石
只要选择了分布式架构,无论是 SOA、微服务、服务网格或者其他架构风格,涉及与远程
服务交互时,服务的注册发现、跟踪治理、负载均衡、故障隔离、认证授权、伸缩扩展、
传输通讯、事务处理,等等,这一系列问题都是无可避免的。
4、不可变基础设施 云原生基金会(CNCF),注意,k8s当初也是在该基金会拿到毕业证书的。在云原生时代、后微
服务时代中,软件与硬件之间的界线已经彻底模糊,无论是基础设施的运维人员,抑或技
术平台的开发人员,都有必要深入理解基础设施不变性的目的、原理与实现途径。
第二篇、技术演示
1、运行程序--前端工程
①从互联网已部署(由Travis-CI 提供支持)的网站(由GitHub Pages 提供主机),直
接在浏览器访问: http://bookstore.icyfenix.cn/ 。--直接访问网址
②通过 Docker 容器方式运行:
$ docker run -d -p 80:80 --name bookstore icyfenix/bookstore:frontend
然后在浏览器访问:http://localhost --需要拉取镜像,请等待
实际本人操作访问的是虚拟机的IP地址
③通过 Git 上的源码,以开发模式运行:
# 克隆获取源码
$ git clone https://github.com/fenixsoft/fenix-bookstore-frontend.git
# 进入工程根目录
$ cd fenix-bookstore-frontend
# 安装工程依赖
$ npm install
# 以开发模式运行,地址为localhost:8080
$ npm run dev
然后在浏览器访问:http://localhost:8080
单体架构--springboot
运行程序
①通过 Docker 容器方式运行:
$ docker run -d -p 8080:8080 --name bookstore icyfenix/bookstore:monolithic
本人测试访问的依旧是虚拟机IP地址,预留账户:(user:icyfenix,pw:123456)
②通过maven方式运行,去GitHub获取源码
# 克隆获取源码
$ git clone https://github.com/fenixsoft/monolithic_arch_springboot.git
# 进入工程根目录
$ cd monolithic_arch_springboot
# 编译打包
# 采用Maven Wrapper,此方式只需要机器安装有JDK 8或以上版本即可,无需包括Maven在
内的其他任何依赖
# 如在Windows下应使用mvnw.cmd package代替以下命令
$ ./mvnw package--直接使用git终端
# 运行程序,地址为localhost:8080
$ java -jar target/bookstore-1.0.0-Monolithic-SNAPSHOT.jar