Share架构的一些心得
个人这些年,从web->system service->app 项目实战,陆陆续续经历的项目很多,自己也数不清。自己也一直对于架构没有明确去给出一个自己的定义描述。
刚好最近一直在flutter折腾,感触良多,就整理了自己对于架构的心得体验。
架构说直白一些就是3步套路(抽象、分治、演化)的走法就可以设计出一个不算差的架构,这些年经历和设计出的项目,于我而言,架构无非2类实现方式,它们都殊途同归:一种是直接抽出核心点,简化逻辑,实现最小功能逻辑验证可行性,然后推出宏观架构,一切围绕核心点去架构(自底向上);,另一种方法就是直接宏观方向进行架构,拆分出业务组件、模块,梳理之间的关系流程得出基础架构,再根据基础架构快速实现各基础模块来验证和改进。(自顶向下),
以上2种方式虽然顺序不同,但是都是围绕【架构核心】的3个点进行:
1)抽象—>分层:抽象在我看来,就是一句话:跳出细节去思考总结,产生概念性的标记对象,宏观去描述业务逻辑。而分层,是从也是宏观去实现,每一层为解决特定领域问题而产生的解决方案,为向上提供服务,有些层会贯穿其他层提供服务,就可以认为是共享层,比较容易理解分层的就是mvc。
2)分治:是应对和管理复杂业务的通常手段,有句经典“一切皆接口”,越是编码,越有这样的体会,分治在我看来就是大问题无法解决,就拆分小问题,通过类似接口、方法、事件等手段分解之后将小问题组合起来的解。
3)演化:社区也经常有人讨论演化和架构的关系,社区有2种主流:偏架构方法流,还有一种就是偏演化流,在我看来演化是架构去其糟糠取其精华的体现,个人比较喜欢,只有经历过版本的架构(抽象、分治)才能有演化这一步,不断演化才能优化出一套最适合团队的输出物。又比如微服就可以算是演化流,但是从宏观去考虑,微服务又是先架构后演化,后期的演化会推动架构的不断进化。
Share架构的一些心得的更多相关文章
- 架构实战项目心得(九):后台服务工具ldap:统一用户中心ldap工具使用以及安装
一.安装OpenLDAP 1.安装 yum -y install openldapopenldap-servers openldap-clients openldap-devel compat-ope ...
- 架构实战项目心得(六):后台服务nosql数据库mongodb
一.架构介绍 mongodb有几种部署方式,这里采用的是副本集架构(Replica Set). 为了防止单点故障就需要引副本(Replication),当发生硬件故障或者其 ...
- YouTube 网站的架构演进——阅读心得
基础平台 Apache Python Linux(SuSe) MySQL psyco,一个动态的Python到C的编译器 lighttpd代替Apache做视频播放 状态 支持每天超过5亿的视频点击量 ...
- 架构实战项目心得(十四):spring-boot结合Swagger2构建RESTful API测试体系
一.添加依赖: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-s ...
- 架构实战项目心得(十一):基于spring-security-oauth2的mysql数据表设计
一.建立数据库及数据表结构 CREATE SCHEMA IF NOT EXISTS `oauth2` DEFAULT CHARACTER SET utf8 ; USE `oauth2` ; -- -- ...
- 架构实战项目心得(十):基于spring-ladp的统一用户中心结构设计以及代码结构设计
一.目录设计 1 公司 2 部门 3 注册人员 4 层级人员 二.规则 1 注册 自行注册人员放到模拟公司的目录下,等所属公司组织结构建立完毕,将此人员迁移到所属公司(或者删除此人员,所属公司新建此人 ...
- 架构实战项目心得(八):dubbo知识的整理
1 Dubbo启动时检查.集群容错.负载均衡.线程模型的设置以及选项: 启动时检查:(1)Dubbo默认会在启动的时候检查依赖的服务是否可用,不可用时会抛出异常.阻止Spring初始化完成.以便 ...
- 架构实战项目心得(七):使用SpringBoot+Dubbo+Mybatisplus+Oracle搭建后台项目框架(二)
接下来我们将整合mybatisplus+Oracle,实现一个简单的查询.(期间踩了很多坑,遇到一些问题,还好慢慢解决了.现在是通过配置文件的方式来进行dubbo服务的注册和发布,希望以后能在学习和实 ...
- 架构实战项目心得(六)(补):mongodb.conf参数详解
--dbpath 数据库路径(数据文件)--logpath 日志文件路径--master 指定为主机器--slave 指定为从机器--source 指定主机器的IP地址--pologSize 指定日志 ...
随机推荐
- linux 简单安装mongodb
Linux 安装mongodb 1.下载mongodb linux wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-amazon- ...
- GitHub Pages建立第一个静态页面
1.创建仓库 创建仓库点击右上角的加号,选择newrepository.然后对仓库信息进行设置.注意箭头标识的几个地方.仓库名必须是http://username.github.io的形式.必须勾选p ...
- CodeForce 855B 暴力or线段树
CodeForce 855B 暴力or线段树 题意 给你一串数,然后找出三个数,他们的前后关系和原来一样,可以相同,然后分别乘p,q,r,求他们积的和最大,并且输出这个数. 解题思路 这个可以使用线段 ...
- Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
准备 利用vue-cli脚手架创建项目 进入项目安装vuex.axios(npm install vuex,npm install axios) axios配置 项目中安装axios模块(npm in ...
- python字符串中的转义符
python字符串中的转义符 1,单引号,双引号,三引号 a='www.96net.com.cn',b="96net.com.cn",c="""96n ...
- .NET平台 C# ASP.NET
.NET 平台 根据微软的定义: .NET is a“ revolutionary new platform, built on open Internet protocols and standar ...
- Vue+elementui 实现复杂表头和动态增加列的二维表格
先上完成的效果图:列是根据查询结果增加的 数据格式: 表头的数据取出: data.data.forEach(element => { this.thead.push({ 品名: element. ...
- hadoop HA + HBase HA搭建:
hadoop HA搭建参考:https://www.cnblogs.com/NGames/p/11083640.html (本节:用不到YARN 所以可以不用考虑部署YARN部分) Hadoop 使用 ...
- linux--基础知识2
#超级用户root的家目录是/root ,而普通用户的家目录被存放在/home目录下 cd /目录 切换到指定目录 注意 / 是根目录 linux的一些重要目录 1.bin目录,用来存放常用的可执 ...
- this与super的区别
调用super()的语句必须要写在子类构造方法的第一行. super()是在子类中调用父类的构造方法:this()是在同一类中调用其它方法. super()和this()都需要放在构造函数的第一行. ...