个人这些年,从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. Struts2异常:HTTP Status 404 - /Struts2/book/addBook.action

    HTTP Status 404 - /Struts2/book/addBook.action 如果在Struts2的框架中访问路径出现了这个错误,可能存在的原因有如下的两个: 1. 路径写错,也就是a ...

  2. C++ 中赋值运算符重载以及深拷贝浅拷贝解析

    转载自:http://blog.csdn.net/business122/article/details/21242857 关键词:构造函数,浅拷贝,深拷贝,堆栈(stack),堆heap,赋值运算符 ...

  3. mysql续集(查询部分)

    mysql查询部分,从基础的查询到关键字,where子句,group by, order by, limit ,having,子查询分为from子查询和where子查询,左连接和右连接,内连接的连表查 ...

  4. [Bzoj2004][Hnoi2010]Bus 公交线路(状压dp&&矩阵加速)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2004 看了很多大佬的博客才理解了这道题,菜到安详QAQ 在不考虑优化的情况下,先推$dp ...

  5. 从ES6重新认识JavaScript设计模式: 装饰器模式

    1 什么是装饰器模式 向一个现有的对象添加新的功能,同时又不改变其结构的设计模式被称为装饰器模式(Decorator Pattern),它是作为现有的类的一个包装(Wrapper). 可以将装饰器理解 ...

  6. A dreamstart的催促 (快速幂) B TRDD got lost again

    A   dreamstart的催促 链接:https://ac.nowcoder.com/acm/contest/322/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ ...

  7. java指定若干个网络图片,打包为zip下载

    应项目要求需要将多个存在某url地址的图片,打包为zip下载下来 public void download(HttpServletRequest request, HttpServletRespons ...

  8. webstorm 2019 去掉编辑器右侧白线

    第一步:打开设置 第二步: 第三部:apply   关闭设置

  9. js函数总结

    最近要经常写一些Js代码,总看到同事能使用js高级函数写出比较简洁的js代码,挺羡慕的,于是就花了一些专门时间来学习. forEach.map.reduce 我就不喜欢一上来就给出语法来,先来一个例子 ...

  10. python基础-文件操作的其他方法

    # f=open('code.txt','rb')#b的方式不能指定打开编码格式,以二进制的方式打开文件 # data=f.read() # print(data) # #encode 编码 deco ...