1、
(1)一层架构:表示、业务逻辑、数据访问交织在一起。
(2)二层架构:独立了数据访问,表示和业务逻辑交织在一起。如Java的JDBC、IO流,.NET的ADO.NET的推动。
(3)三层架构:表示层、业务逻辑层、数据访问层。
2、
(1)单块架构:功能集中、代码和数据中心化、一个发布包、应用程序部署后运行在同一进程。
(2)单块架构的挑战:维护成本增加。持续交付周期长。新人培养周期长。技术选型成本高。
3、
(1)微服务架构:提倡将单一应用程序划分成一组小的服务。每个服务运行在独立的进程中。服务与服务间采用轻量级的通信机制沟通。每个服务围绕具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境。应尽量避免统一的、集中式的服务管理机制。对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具进行构建。
(2)微服务架构中的每个服务,都是具有业务逻辑的,符合高内聚、低耦合以及单一职责原则的单元,不同服务通过管道的方式灵活组合,从而构建出庞大的系统。
(3)对于微服务架构中的每个服务而言,与其他服务高度解耦。只改变当前服务本身,就可以完成独立的测试、构建、部署。
4、
(1)静态语言:
优点:编译期语法检查,便于调试,类型安全性高。
缺点:需要更多的类型相关代码。
如:Java、C++。
(2)动态语言:
优点:灵活性高,运行时可以改变内存结构,无类型检查,无须写较多的类型相关代码。
缺点:不方便调试,无编译期检查。
如:JavaScript、Ruby、Python。
5、
(1)高内聚:模块内元素紧密结合。
(2)低耦合:模块间尽可能独立。
6、
(1)垂直扩展:提升单机处理能力。
两种方式:
增强单机硬件性能。如增强CPU、网卡、硬盘、内存设备。
增强单机架构性能。如使用Cache,减少IO;使用异步;使用无锁数据结构。
(2)水平扩展:增加服务器数量。
增加站点应用层(容器应用层)、服务层、数据层的服务器。
7、
(1)独立性:应用交付过程中,开发、测试以及部署的独立。
8、
(1)应用环境:开发和配置环境、测试环境、类生产环境(预生产环境)、生产环境。
(2)类生产环境:从生产环境不定期同步,保持和生产环境的设置、数据一致性,也是用于测试,它和测试环境最大的区别就是它和生产环境的同步性最高,几乎一样,有些测试,比如需要大数据量的,用这个环境测试看程序性能比用测试环境(一般情况下数据较少)会更准确。(不是必须的,有的公司没有)
9、
(1)精益创业(Learn Startup):分析建立最小化可实行产品(MInimum Viable Product)。
(2)敏捷开发:通过反馈找到正确演进方向。
(3)持续交付:快速、可靠、频繁的交付。
(4)云、虚拟化和基础设施自动化(Infrastructure As Code):简化基础设施、运行环境甚至软件的创建、配置。
(5)DevOps:打破开发和运维的壁垒。
10、
(1)1996年,Gartner提出面向服务架构(SOA)。
(2)SOA将功能相关的一组功能提供者组织在一起为消费者提供服务。2000年左右,ESB(Enterprise Service Bus)、WebService、SOAP等技术使SOA落地。
(3)SOA采用集中式服务架构。与SOA相比,微服务更灵活,强调独立测试、独立部署、独立运行,受到云计算、敏捷开发、DevOps、持续交付的推动。
11、
(1)微服务的本质:
1>服务作为组件;2>围绕业务组织团队;3>关注产品而非项目;4>技术多样性;5>业务数据独立;6>基础设施自动化;7>演进化。