架构师训练营第四章作业
作业:一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举一个说明。
大型物联网架构都是从最小系统演变而来,下面主要说一个每个阶段用到的技术。
原型阶段
基础框架选择
项目立项的时候我们会去做基础框架的选择,一般常见的选择
spring:老项目之前用的最多的基础框架,如果是从之前分支迁移或者可能会选择该框架;
spring boot:springboot是微服务开发的利器,能够快速上手开发、扩展并具有微服务特点;
spring cloud:基于springboot做的一套解决方案,一般在服务场景下需要微服务框架的支撑;
dubbo:是一个高性能服务框架,提供rpc轻量级框架已经服务注册发现;
ServiceComb:华为开源微服务框架,提供含服务契约、编程模型、运行模型与通信模型四个部分,具备负载均衡、容错熔断、限流降级、调用链追踪等全面微服务治理能力
自研:基本少很少有公司从头开发
基础功能集成
在框架基础开发阶段,我们都会集成一些简单的功能,作为验证下目标
ORM框架:一般常用Mybatis、JPA、Hibernate等;
事务:一般都是基于Spring-tx做本地事务管理;
协议:选择http选择还是rpc协议;
开发模型:是用传统的MVC架构还是用DDD的领域架构;
异常处理:常用异常处理机制
基础开发阶段
中间件
在基础开发阶段我们需要用一些基础中间件做支撑:
注册中心:我们常用的注册中心有Nacos、eureka、zookeeper、consul基本很多都被淘汰一般用Nacos和zookeeper;
配置中心:常用的配置中心有apollo、nacos、zookeeper,需要根据企业特点做选择;
网关:一般使用SpringCloudGateway,做路由分发、过滤、权限认证等;
基础功能
这个阶段我们需要开发一些基础框架功能
服务编排:在微服务场景下需要对众多服务进行统一编排处理;
信息码处理:不同领域的信息码分类管理,并制定统一规范;
国际化:一般至少支持中英文,其它扩展按需处理;
防重幂等:保证交易不被重复执行或者重试次数处理;
分布式事务:在微服务场景需要保证服务的最终一致性需要通过分布式管理来管理;
报文处理:对报文校验、解包处理、组包处理、统一请求参数和输出参数
安全认证:常见用户角色token认证、或者是mac校验等功能;
应用阶段
在这一阶段基本上就是可以交付应用可以开发的阶段但是还存在很多问题,我们需要引入其它的功能组件保证其可靠性;
redis:用nosql出做缓存处理,一般缓存分为几级 交易级缓存、jvm级缓存、远程分布式缓存;
分布式锁:在微服务场景下需要一个全局分布式锁对账户进行处理,保证数据的正确性;
文件:把图片或者是文件用统一的服务器做管理;
异步处理:在高并发场景下做削峰填谷和解耦业务之间的强关联关系;
支撑阶段
这一阶段主要是对整个微服务体系做统一管理
分库分表:要预估系统的数据量,哪些数据可以分为一个数据库,按照数据量评估需要做分片处理,一般会使用shardingsphere;
链路:在微服务场景下一般是比较长的,如果出现问题也不要追踪问题,需要有一个统一的管控平台一般常用的有zipkin或者skywalking;
日志:当应用出现问题的时候,在微服务场景我们是不知道具体是哪一个服务器出现异常,所以我们只能通过平台来看,一般会用到ELK;
路由:在单元化架构下我们需要有一个路由系统来做单元服务定位;
自动化阶段
这一阶段主要是为了简化日志和增强监控手段
代码库:我们常用的git或者是gitflow做代码管理工具;
资产库:在日常开发的过程中需要需要记录一些开发文档或者是系统资源,一般常用的是confluence;
缺陷库:为了加快整个迭代速度会加入敏捷管理包括迭代任务、看板、执行计划;
物料库:主要为了方便各做之间协调依赖和对外交付,常用的nexus
持续构建发布:常用jenkins做流水线构建或者是发布;
版权声明: 本文为 InfoQ 作者【叮叮董董】的原创文章。
原文链接:【http://xie.infoq.cn/article/d81c2c1cd1cebdf7fb481f208】。文章转载请联系作者。
评论