关于个人微服务相关的学习资料

时间:2021-07-08 17:43:38   收藏:0   阅读:0

MS.Microservice

微服务架构设计
此项目主要是个人在学习微服务的过程中所了解到的知识点

.NET 微服务 - 体系结构电子书-原文英文版

.NET 微服务 - 体系结构电子书

Martin Fowler 对微服务特征的概括:微服务

微服务与 DDD 基本概念

应用程序包括

应用程序必须要高可用,要支持垂直的向外拓展,因为有些子系统还会要求更高的伸缩性。

并且应用程序必须是可以部署到多种架构环境的(多个公共云或本地云),并且理论上还是要跨平台的,要很容易的从 Windows 和 Linux 之间切换。

微服务拆分的好处:

微服务的缺点:

微服务分层

微服务验证

编码一定免不了的就是异常,以我现在的经验业务验证一般都是写在应用层。还有一些就是请求接口参数的基本验证逻辑,向这种一般都是直接从业务层返回给 UI 的。还有一种验证就是领域验证,比如聚合根添加实体的时候会对领域实体属性进行符合领域需求的验证判断。我们一般的做法是直接抛出一个属于领域层特定的错误类型如DomainException,然后在应用层或是全局异常处理程序中对消息展现给 UI。这样就做到了领域层与应用层的逻辑解耦。

public void check() {
   if (date == null) throw new IllegalArgumentException("date is missing");
   LocalDate parsedDate;
   try {
     parsedDate = LocalDate.parse(date);
   }
   catch (DateTimeParseException e) {
     throw new IllegalArgumentException("Invalid format for date", e);
   }
   if (parsedDate.isBefore(LocalDate.now())) throw new IllegalArgumentException("date cannot be before today");
   if (numberOfSeats == null) throw new IllegalArgumentException("number of seats cannot be null");
   if (numberOfSeats < 1) throw new IllegalArgumentException("number of seats must be positive");
 }

这个做法是没错的,但是我们要知道,这种做法是有代价了,尽管结构,代码都优雅了,但是请记住这是以抛出异常的方式为代价实现的。我们知道发生异常会给应用程序带来非常大的性能开销,会由用户态切换成内核态将错误信息栈拿到返回给上层应用。那么我们其实是可以通知模式验证代替这种跑错的方式的。

具体详见用通知代替抛出异常

微服务模块组成

分布式链路追踪

分布式链路追踪要遵循 OpenTracing API 规范的。

分布式系统模式

分布式锁

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!