架构师训练营第三周学习总结

用户头像
Bruce Xiong
关注
发布于: 2020 年 06 月 24 日
架构师训练营第三周学习总结

1、为什么会引入反应式编程,什么是反应式编程,引入后会带来那些问题需要解决。



传统的编程方式是用户发起一个请求,请求到达Web 容器,Web 容器为每个请求分配一个线程进行处理,线程在处理过程中,如果遇到访问数据库或者远程服务等操作,就会进入阻塞状态,这个时候,如果数据库或者远程服务响应延迟,就会出现程序内的线程无法释放的情况,而外部的请求不断进来,导致计算机资源被快速消耗,最终就会导致程序崩溃。

有什么办法可以让线程不阻塞呢?那就是异步,反应式编程就是一种异步的编程方法。核心就是利用消息驱动用有限的线程异步去处理各种请求。即当用户请求到达Web 容器,Web 容器线程不需要执行应用程序代码,它只是将用户的 HTTP 请求变为请求对象,将请求对象异步交给框架发送消息给 Service 去处理,自身立刻就返回。因为容器线程不做太多的工作,用户的请求不会被阻塞,不会因为容器线程不够而无法处理。相比传统的阻塞式编程,Web 容器线程要完成全部的请求处理操作,直到返回响应结果才能释放线程;如下图Flower框架所示:

反应式编程框架引入会带来诸如:开发人员需要转变开发思维,定位问题解决问题更加复杂了。



2、设计模式是什么?

每种模式描述了一种问题的通用解决方案,且是一种可重复使用的解决方案。

3、各个模式,解决什么问题?解决方案是什么?方案所带来的利与弊?



1)简单工厂模式

问题:

Client依赖Sorter的具体实现,如果增加一种排序方式又要去修改Client代码。不符合 开-闭原则

解决方案

利用简单工厂模式解决Client 不周依赖Sorter的具体实现。符合开闭原

代码示例:



利与弊

利:满足开闭原则;抽象、动态编程

弊:

由于采用配置文件+反射缺少编译时类型安全

限制了Sorter的实现只能通过“默认构造函数”创建。



用户头像

Bruce Xiong

关注

熊大 2017.10.18 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第三周学习总结