架构系列(一)应用架构以及网络架构初探

应用架构

此系列博客不会涉及到代码,但是博主会根据博主的团队在实际场景的快速落地,为大家介绍应用架构以及服务器、网络架构的设计和实现,另外,针对后台框架级别的,博主后续会出后端以及前端相关的系列博客

写在前面

因为博主主做java,所以整个体系包括大数据都是偏向java方向的,并且博客不会涉及到测试体系

说起应用架构,很多人都会将框架和架构给混淆。以java为例,博主面了很多人,问起是否有一定的架构基础,很多人都会说有,并且说自己是做springboot。但是,springboot仅仅只是实现业务代码的一个框架,就如jdk、xxSDK等等,并没有什么大的区别。
严格来说,架构是无法用大或者小来衡量。博主认为,凡是能快速落地业务,并且具有可持续性扩展、具有良好的业务响应能力的代码,都可以称作是当下针对此公司或者业务最好的架构。
架构包含了很多,譬如框架、自动化、测试体系、前端体系、后端体系、通信体系等等,在最短的时间可以设计出整套解决方案并且落地,快速响应业务变化,才是一个合格的架构师

架构介绍

这里博主以博主团队实际场景给大家介绍,当然,每一个技术人员都有自己的想法和设计,此系列博客也仅供参考和记录。贡献给更多的人学习

对比一下博主在digital的架构,1.0与2.0发生了极大的变化(2.0是博主做的)
在这里插入图片描述
随着业务不断增加,项目不断增加,独立单服务的成本与代价也在逐渐变大,并且,无法做到数据互通、组件共享

在这里插入图片描述
博主修改了整个架构体系(不包含云架构),所以目前来看,数据中台以及部分的快速开发得到了极大的改善

架构组成

当我们真正去设计一个架构时候,首先要确立业务场景,如果业务场景单一到,可以用一个服务来解决,那么其实,架构就是一个前端+后端的服务+等等(代码规范是必须的),当业务场景需要进行切割和划分的时候,那么架构则是一个后端业务集群和前端+等等
博主的团队主要做电商和数字信息,那么离不开pc、手机和数据,所以博主团队的产品架构肯定不是一个单服务

单服务不简单,从0到1将单服务做好,才会考虑业务的扩展和拆分,并不是一个架构一定是包含N个微服务

博主团队的架构体系迭代了4次,一直是以aws云服务为基础设施来进行devOps。从13年美国团队的springboot+cloud+camel+angular体系到后期搜索引擎solr、mq、ignite的加入,在到后来博主开始推广vue,中国端加入纯粹的springboot与cloud的网关、熔断、跨境通信、es搜索引擎,最后博主开始做数字信息,直接开始内部开源framework脚手架、前端vue组件库、大数据架构落地,最终形成从电商到内部移动信息的落地。

  1. 初期springboot+camel(企业事件驱动)+angular
  2. solr、ignite、mq等中间件的加入,开始拆分业务模块,制定domain模型
  3. 网关、熔断、vue、es,开始整改前端,提升前端性能,后台开始升级springboot
  4. webflux、阿里云、devOps、自动化

最初由美国人进行框架搭建,团队迁移到中国后,团队开始自行devOps,电商近300台服务器,最高峰600台,全部由博主团队个人devOps,从自动化的部署和发布、到后端体系的制定、再到前端的组件开发,最后服务器以及网络的设计,后期博主接收digital,开始迁移至阿里云,目前来说,digital的整体架构更加清晰和整洁

目前整体的编程架构分为以下:
1.framework,通用核心的框架,包含博主团队自研的脚手架、核心业务包、自研data-streaming、logger-sdk、feign-context-sdk、监控和链路追踪等等
2.UI,不是UI设计,而是博主不断研发前端提炼出来的基于vue的手机端开源组件库,目前博主只在外面放了z-phone-ui用来让更多人学习,而内部的coder-ui等ui库暂时不打算开源
3.service,业务集群
4.data,大数据平台
5.自动化,包含前端以及后端与服务器的自动化的部署和构建
6.云资源,目前博主团队大部分体系都放在云,算是混合云开发

博主将所有通用业务流程和非业务框架全部抽离,除了service之外,所有的体系都可以快速落地和部署,这样极大减少了部门或者公司成立需要落地的成本,非常快速开始业务的开发

微服务架构

说到架构,不得不谈微服务,现在微服务已经成为了一个现象级的概念,从最初的敏捷宣言到阿里开源dubbbo, 再到后来springboot+cloud,已经成为了目前编程界的大哥大

那么既然是业务集群,现在又是需要中台化并且中台前移,那么在设计微服务的集群时候,我们需要直接隔离非业务的服务,那么至少需要包含gateway、auth、discover、api(这个是博主自己的喜好,博主认为api需要统一管理)、monitoring(可以自研,也可以使用spring系列的组件)

在这里插入图片描述
因为博主工作环境所致,所以很多组件的开发都是博主团队自研。有人会问,为什么要自研,反正都有。博主只能回答:这可能是做技术的爱好吧~

前端架构

博主团队在博主的大力推广下(非常感谢滴滴前端架构师黄毅ustbhuangyi),然后全员开始用vue,以下主要介绍前端也是vue,博主后期会出一系列的前端从0到1的博客

这里不过多介绍,博主后期会出一整套的从0到1的前端博客系列
在这里插入图片描述
博主制定了部分的前端规范,大量抽取手机端的ui组件,来轻量化整个page的开发。

网络架构

博主用阿里云来介绍整个服务器的架构,这样可能会更加清晰一些

概念

首先,既然是阿里云,我们需要了解一些基本的云组件概念(当然和自家服务器是一个概念的)
博主介绍部分的组件,这里也只介绍比较通用的云架构方案

云组件

  1. EC2,即服务器,博主这里都是centos7
  2. RDS,即数据库,博主目前电商使用oracle(真tmd贵),digital使用mysql(真tmd的便宜)
  3. OSS(S3),即对象存储,可以理解为一个文件FTP,博主自己团队落地大数据之后,由于安全原因,已经在自研对象存储服务
  4. CDN,缓存加速,这个大家都知道
  5. 域名,大家都懂
  6. SLB,负载均衡器,这个比较重要,因为在架构体系中,原则上,任何服务器是不允许有任何外网ip的,并且SLB也可以直接代替Eureka这种服务发现,直接使用SLB的内网域名来进行通信。
  7. VPC,这个很重要,这个是内网专有网络的IP池,搭配交换机和路由器,可以起到在内网划分子网路由,配合安全组可以隔离不同环境,所有的服务器ip都应该遵循VPC配置,而不是自动生成
  8. 安全组,顾名思义,就是开放或者禁止某个(些)ip以及端口
  9. 弹性IP,这个非常重要,可以理解为外网IP,搭配VPC使用,可以让整个业务集群使用同一个或者多个出口IP
  10. 函数计算(Lambda),无服务计算,博主团队使用lambda比较早, 利用代码运行在云上,而不是服务器上,非常节省资源,客服、机器人、离线导出或者导入等场景非常适合,阿里云搭配OSS使用
  11. 其他,比如MapReduce、HDFS、MQ、容器编排,由于博主都是自研以及自行搭建,所以不需要使用云上这些组件

云架构

上面了解了这么多组件,我们开始搭建云架构体系,博主这里只粗略介绍通用的组件搭配
在这里插入图片描述
上图可见,针对网络VPC做了交换机的切分(阿里云VPC内自动可以相互通信,而aws需要配置路由表),当然,博主这个图上并没有做异地备份以及高可用区(这tm都是要钱的,博主太穷)图上没有包含大数据架构

每个VPC子网划分,都携带多可用区,但是目前没有做多地域的,因为这个需要高速通道打通网络,或者自建VPN

  • 前端集群,在单独的一个VPC中,内部通信通过内网负载均衡器,几乎没有延时
  • 后端业务,通过内网负载均衡器挂载网关,以及外网负载均衡器挂载网关,内网交互几乎没有延时,外网交互(比如app)做auth鉴权
  • 数据库,单独划分可用区

由于所有机器没有外网IP,so,博主在公司以及云上搭建了VPN进行打通。所以除了负载均衡器上443端口之外,再也没有对外的端口,并且ssh使用pem而不是账号密码,所以安全也得到保障

结束语

这篇博客只是粗略的介绍一些架构体系,博主后续会针对组件、业务集群、自动化等做详细的介绍,从0到1搭建企业级的架构,并且与微服务结合,如何做到devOps。欢迎大家点赞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值