加入收藏 | 设为首页 | 会员中心 | 我要投稿 莆田站长网 (https://www.0594zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

如何设计一个支撑高并发大流量的系统?

发布时间:2021-02-18 14:18:01 所属栏目:外闻 来源:互联网
导读:领域驱动设计在战略层面上的域、子域、限界上下文的划分思想和微服务的划分不谋而合。域对应一个问题空间,也就是上例中的电商系统;子域是把域这个大的问题空间拆分成若干个小的更容易解决的问题空间,也就是单体应用向微服务演进过程中划分出来的各个子系统

领域驱动设计在战略层面上的域、子域、限界上下文的划分思想和微服务的划分不谋而合。域对应一个问题空间,也就是上例中的电商系统;子域是把域这个大的问题空间拆分成若干个小的更容易解决的问题空间,也就是单体应用向微服务演进过程中划分出来的各个子系统;限界上下文是解决方案空间,每个子域对应一个或多个解决方案空间。微服务的划分是也是将一个大的问题拆分成若干个小的问题,每一个小的问题用一个或多个微服务来解决。

对于大多数开发同学来说都没有机会接触系统的划分,这些工作一般是公司的技术领导层与架构师来做的,普通的开发同学日常工作中接触到的只是某一个具体微服务或微服务中某一个模块的落地,那是不是说领域驱动设计对于普通开发同学来说就没有用了?当然不是这样,领域驱动设计中的战术设计部分就是指导我们如何落地一个系统才可以使系统具备高可扩展性、高可读性。

所有的系统最终都要以代码的形式落地,而落地的工作都是由普通的开发同学来做的,系统是否具备高可扩展性、高可读性直接影响了整个团队的效率。

三 传统分层架构存在的问题

对于大多数开发同学来说,大部分时间都花在落地一个个微服务上,下面我们来看阿里文娱是如何结合领域驱动设计的思想将微服务进行战术落地的。

目前笔者接触过的微服务大多数都是分层架构并且在Service层与Manager层实现具体的业务逻辑,使用DO、DTO、BO、VO等进行数据传输,数据和行为基本完全隔离。这种分层结构图3是《Java开发手册》中的标准分层结构。

该规范中定义了各层的职责,其中最重要的两层Service层和Manager层是这样规范的(以下两层解释摘抄自《Java 开发手册》):

Service层

相对具体的业务逻辑服务层。

Manager层

通用业务处理层,它有如下特征:

  • 对第三方平台封装的层,预处理返回结果及转化异常信息。
  • 对Service层通用能力的下沉,如缓存方案、中间件通用处理。
  • 与DAO层交互,对多个DAO的组合复用。


战略设计部分指导我们如何拆分一个复杂的系统,战术部分指导我们对于拆分出来的单个子系统如何进行落地,在落地过程中应该遵循哪些原则。

以大家熟知的电子商务系统举例,早期的电商系统因为业务相对简单,用户量和团队规模也较小,一个单体应用就可以搞定,随着容量上升可以将单体应用进行横向扩容,比如早期的淘宝就是这样做的。拆分过程中我们可以把电商系统这个单体应用拆分成订单子系统、库存子系统、物流子系统、搜索推荐子系统等等,如图2所示:


 

面试没过,又被系统捞起来了,我该怎么办?

有些人投递了简历之后,被一个部门面试后没有通过,过段时间有人打电话过来询问是否再进行面试,这是什么情况?要不要面试?这其实是被"捞起来"了,就是说面试没通过,简历会进入人才库,员工可以通过人才库搜索找到自己心怡的人员,进行重新发起面试。首先,捞起来面试的话,也是一次新的面试,面试记录上面也会充分体现出来,和普通的投递没啥区别。所以,如果你第一次面试没过,并且你觉得自己还差的挺远的,那么当你被捞起来之后,我建议你直接拒绝。可以说暂不考虑新的职位,或者说没有换工作意向等。这时候系统上同样会有响应的标注,这样在短期内,就不会被再次捞起来了。什么时候准备好了,再重新投递就行了。

阿里的一次面试不过,对后续面试有没有影响?

这个问题前面也大概提到了肯定是有影响的,很多时候,面试官收到一份简历,会首先查看历史面试记录,如果有非常不好的评价,那么基本就直接Pass了。所以,强烈建议一定要做好准备之后再开始投递简历以及面试,不要抱着试试看的心理。

总结

以上就是大家比较关心的几个问题,我的一些理解和建议。下一次我会再分享以下几个话题:面试阿里,部门选择重要吗?投阿里的简历,怎么选择部门?找人帮忙内推之前,需要问清楚哪几个问题?阿里面试的周期一般是多久?

大家还有什么其他的问题可以给我留言,会在下一次分享中一并回答。



 

(编辑:莆田站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读