个人这些年,从web->system service->app 项目实战,陆陆续续经历的项目很多,自己也数不清。自己也一直对于架构没有明确去给出一个自己的定义描述。

刚好最近一直在flutter折腾,感触良多,就整理了自己对于架构的心得体验。

架构说直白一些就是3步套路(抽象、分治、演化)的走法就可以设计出一个不算差的架构,这些年经历和设计出的项目,于我而言,架构无非2类实现方式,它们都殊途同归:一种是直接抽出核心点,简化逻辑,实现最小功能逻辑验证可行性,然后推出宏观架构,一切围绕核心点去架构(自底向上);,另一种方法就是直接宏观方向进行架构,拆分出业务组件、模块,梳理之间的关系流程得出基础架构,再根据基础架构快速实现各基础模块来验证和改进。(自顶向下),

以上2种方式虽然顺序不同,但是都是围绕【架构核心】的3个点进行:

1)抽象—>分层:抽象在我看来,就是一句话:跳出细节去思考总结,产生概念性的标记对象,宏观去描述业务逻辑。而分层,是从也是宏观去实现,每一层为解决特定领域问题而产生的解决方案,为向上提供服务,有些层会贯穿其他层提供服务,就可以认为是共享层,比较容易理解分层的就是mvc。

2)分治:是应对和管理复杂业务的通常手段,有句经典“一切皆接口”,越是编码,越有这样的体会,分治在我看来就是大问题无法解决,就拆分小问题,通过类似接口、方法、事件等手段分解之后将小问题组合起来的解。

3)演化:社区也经常有人讨论演化和架构的关系,社区有2种主流:偏架构方法流,还有一种就是偏演化流,在我看来演化是架构去其糟糠取其精华的体现,个人比较喜欢,只有经历过版本的架构(抽象、分治)才能有演化这一步,不断演化才能优化出一套最适合团队的输出物。又比如微服就可以算是演化流,但是从宏观去考虑,微服务又是先架构后演化,后期的演化会推动架构的不断进化。

Share架构的一些心得的更多相关文章

  1. 架构实战项目心得(九):后台服务工具ldap:统一用户中心ldap工具使用以及安装

    一.安装OpenLDAP 1.安装 yum -y install openldapopenldap-servers openldap-clients openldap-devel compat-ope ...

  2. 架构实战项目心得(六):后台服务nosql数据库mongodb

    一.架构介绍        mongodb有几种部署方式,这里采用的是副本集架构(Replica Set).        为了防止单点故障就需要引副本(Replication),当发生硬件故障或者其 ...

  3. YouTube 网站的架构演进——阅读心得

    基础平台 Apache Python Linux(SuSe) MySQL psyco,一个动态的Python到C的编译器 lighttpd代替Apache做视频播放 状态 支持每天超过5亿的视频点击量 ...

  4. 架构实战项目心得(十四):spring-boot结合Swagger2构建RESTful API测试体系

    一.添加依赖: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-s ...

  5. 架构实战项目心得(十一):基于spring-security-oauth2的mysql数据表设计

    一.建立数据库及数据表结构 CREATE SCHEMA IF NOT EXISTS `oauth2` DEFAULT CHARACTER SET utf8 ; USE `oauth2` ; -- -- ...

  6. 架构实战项目心得(十):基于spring-ladp的统一用户中心结构设计以及代码结构设计

    一.目录设计 1 公司 2 部门 3 注册人员 4 层级人员 二.规则 1 注册 自行注册人员放到模拟公司的目录下,等所属公司组织结构建立完毕,将此人员迁移到所属公司(或者删除此人员,所属公司新建此人 ...

  7. 架构实战项目心得(八):dubbo知识的整理

    1 Dubbo启动时检查.集群容错.负载均衡.线程模型的设置以及选项:    启动时检查:(1)Dubbo默认会在启动的时候检查依赖的服务是否可用,不可用时会抛出异常.阻止Spring初始化完成.以便 ...

  8. 架构实战项目心得(七):使用SpringBoot+Dubbo+Mybatisplus+Oracle搭建后台项目框架(二)

    接下来我们将整合mybatisplus+Oracle,实现一个简单的查询.(期间踩了很多坑,遇到一些问题,还好慢慢解决了.现在是通过配置文件的方式来进行dubbo服务的注册和发布,希望以后能在学习和实 ...

  9. 架构实战项目心得(六)(补):mongodb.conf参数详解

    --dbpath 数据库路径(数据文件)--logpath 日志文件路径--master 指定为主机器--slave 指定为从机器--source 指定主机器的IP地址--pologSize 指定日志 ...

随机推荐

  1. 浅谈WebService开发三(动态调用WebService)转

    在前两讲里,我已经向大家演示了如何使用WebService.同步, 异步调用WebService,而在实际开发过程中,可能会有多个WebService接口供你选择,而在程序执行过程中才决定使用哪一个 ...

  2. 非GUI 模式运行 jmeter 压力测试

    非 GUI 模式,即命令行模式,运行 JMeter 测试脚本能够大大缩减所需要的系统资源. 使用命令:jmeter -n -t <testplan filename> -l <lis ...

  3. docker添加加速器

    通过 Docker 官方镜像加速,中国区用户能够快速访问最流行的 Docker 镜像.该镜像托管于中国大陆,本地用户现在将会享受到更快的下载速度和更强的稳定性,从而能够更敏捷地开发和交付 Docker ...

  4. framebuffer设备驱动分析

    一.设备驱动相关文件 1.1. 驱动框架相关文件 1.1.1. drivers/video/fbmem.c a. 创建graphics类.注册FB的字符设备驱动 fbmem_init(void) { ...

  5. VISTA Enhancer Browser

    微信公众号:生物信息学起步如果觉得对你有帮助,欢迎关注/转发/分享[1] 内容目录 1.目的2.实验数据2.1 候选增强子识别2.2 转基因小鼠分析2.3 注释3.搜索数据库3.1 概括3.2 高级搜 ...

  6. Linux awk抓取IP的两种方式

    ip addr show ens33 | awk -F "[ /]+" '/inet /{print $3}' 或 ifconfig ens33 | awk -F "[ ...

  7. python基础面试题:(1)

    1.以下用C语言开发的Python解释器是( ) A:python是Java语言开发的Python解析器,B:PyPy是使用Python语言开发的Python解析,C:IronPython是.net平 ...

  8. spark复习笔记(6):RDD持久化

    在spark中最重要的功能之一是跨操作在内存中持久化数据集.当你持久化一个RDD的时候,每个节点都存放了一个它在内存中计算的一个分区,并在该数据集的其他操作中进行重用,持久化一个RDD的时候,节点上的 ...

  9. Vue 实现文件的上传

    要把文件上传的web,需要分几步? 答:三步 第一步:创建一个上传文件的标签 <input type="file" id="fileExport" @ch ...

  10. CentOS 7 FTP的安装与配置

    CentOS7 FTP安装与配置 1.FTP的安装 #安装yum install -y vsftpd #设置开机启动systemctl enable vsftpd.service #启动systemc ...