-
当事件有非常不同的需求时,为事件开发数据结构可能会很复杂。
-
维护基于事务的一致性机制很困难,因为接收事件的模块是解耦和独立的。
适合:
-
具有异步数据流的异步系统
-
各个数据块仅与多模块中的少数模块交互的应用程序
-
用户界面
许多的应用程序都具有一组核心代码,这些代码在不同的模块下反复使用。例如,开发工具Eclipse将打开文件,批注,编辑文件并启动后台处理器。用于显示文件和对其进行编辑的代码是微内核的一部分。其他的插件扩展了Eclipse,从而扩展了其功能。
具体到解决方案就是将一些基本的核心的任务代码推入微内核。然后,不同的业务部门可以根据不同类型的声明编写插件。
注意事项:
-
确定哪些代码是微内核中的内容通常是一门艺术。它应该保留经常被使用的代码。
-
一旦许多插件依赖微内核,修改微内核可能非常困难,甚至不可能。唯一的解决方案就是修改插件。
-
为内核函数选择正确的粒度很难事先完成,也几乎不可能在后期进行更改。
适合:
-
工具类软件
-
在核心代码与边缘代码之间有清晰区分的应用程序
-
具有一组固定的核心函数和一组动态规则的应用程序
小宝宝既可爱又有趣,但是一旦变大,就很难操纵并且难以维护。微服务架构旨在帮助开发人员避免让自己的宝宝长大,笨拙,僵硬,烦人。它的目标不是创建一个大型程序,而是创建多个不同的小型程序。避免修改一个小bug,就需要重新部署整个大型应用的情况出现。
这种方法类似于事件驱动和微内核方法,但是主要用于解耦不同模块及任务。在许多情况下,不同的任务可能需要不同的处理量,并且用途可能会有所不同。所以微服务的特点是便于修改、便于扩展。使用负载均衡及服务发现的机制,在用户使用高峰期部署更多的微服务,保证服务的高可用;在用户低频服务时段缩减微服务,从而节省服务器资源。
注意事项:
-
并非所有应用程序都可以拆分为相对独立的微服务单元。
-
当任务分散在不同的微服务之间时,通信成本会更大。单个请求的响应时长会增加。
适合:
-
快速发展新业务团队
-
大型Web应用程序
许多网站都是围绕数据库构建的,只要数据库能够满足负载,它们就可以正常运行。但是当使用量达到顶峰,并且数据库无法跟上用户请求的速度时,整个网站就会瘫痪。将数据存储在内存中可以使许多工作更快,从而大幅度提高用户并发访问的支撑能力。
注意事项:
-
对于内存数据库,事务的支持更加困难。
-
开发专业的高速缓存数据的程序,对程序员的技术水平往往要求更高一些(至少比只会写增删改查的程序员要高)
适合:
-
高频点击数据流和用户日志之类的大量数据处理
-
低价值数据,有时可能会丢失而不会造成重大后果(比如用户访问量数据)
-
读多写少的数据。比如新闻数据,写完之后几乎不改,但是有很多的人看。
技术学习总结
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
[外链图片转存中…(img-k8jEouJh-1714731996696)]
[外链图片转存中…(img-sKQcDvkF-1714731996696)]