这是我参与「第四届青训营 」笔记创作活动的第3天
本文用于记录在青训营所学的有关架构方面的知识,主要以Android开发中的为主。
架构架构,框架结构,架构在我的理解上属于一种玄之又玄的东西。对于我而言,并未真实接触需要去设计架构的场景,但这也不妨碍我去学习。
单体架构
这个就是最简单的组织方式了,将所有代码都写在一个模块中,也是我目前主要接触的架构方式。其优点突出一个简单,但是缺点也很明显,耦合度太高了,不易扩展,并且单点故障(即进程挂了,那就真什么都挂了)
分离架构
这个是我目前在探索的主要架构。分离,顾名思义就是将项目中的一些模块、技术等分离,将业务进行分散开发,达到一个较好的低耦合、高内聚、可复用,但是其项目依旧捆绑在一起,只是在代码层面分离。
比如MVC、MVVM、MPI等就是android中一些在模块内常用的分离架构。在android中,运用这些架构总归是在解决一个问题:追求View与Model的高内聚、低耦合。
比如我们青训营大作业中要求使用MVVM模式进行开发。
在MVVM模式中,通过添加ViewModel和视图绑定、数据绑定机制来减少Activity中的代码,更好的实现高内聚低耦合。
该架构几乎是单模块下最优选择了,之后的架构方式主要是针对单点故障问题所提出。
服务化架构
将各个业务独立封装起来,并且暴露出对外提供服务的接口,由其他服务根据协议进行调用(比如http协议)。
这相当于分模块开发,比如登录模块、商品模块、结算模块等
分布式架构
这个是我自己加上的。主要是我感觉直接跳到微服务架构有点快了,毕竟问题是一点一点的解决的。分布式架构主要是针对单点故障问题进行解决,其目标是将业务模块完全独立出来,成为一个可以独自运行的程序,这样在一些业务崩溃的时候,也不至于全盘崩溃。
这种模式下,单个服务可以独立运行,这时候就需要有注册中心,服务发现等中间件来进行管理。
微服务架构
属于分布式架构的一种,是分布式架构的基础上,将业务细分,以达到极高的内聚状态。其优点很多,主要是继承了分布式的高内聚、低耦合、高可用的特点,并且复用性更为强大。
其缺点呢,我觉得吧,以目前的技术栈来说,主要的微服务组件都是他人构建的,开发的时候比较方便,debug的时候就痛苦了。
领域驱动设计
这个我是一点都不了解,先占个坑,以后来补。
架构总结
说完这么多架构的设计,其最终目的就是达到一个高内聚、低耦合、高可用、可复用的状态,让我们coding出来的代码更具有价值。
架构设计理念
说完架构方法,在那节课上让我影响最深的就是,没有完美的架构解决方案,只有较为合适的解决方案;不要为了炫技而去设计,那样只会苦了自己和别人,要结合实际、结合需求进行设计,这样设计出来的方案才较为完美。