gydtep 发表于 2021-10-26 12:27:15
Tracing – 链路追踪 - 记录单个请求的完整处理流程,可以为分布式应用的开发者提供了完整的调用链路还原、调用请求量统计、应用依赖分析等能力,能够帮助开发者快速分析和诊断分布式应用架构下的性能和稳定性瓶颈。gydtep 发表于 2021-10-26 14:56:24
。这个设计原则的基础是应用配置和持久化状态与具体运行环境的解耦。Kubernetes 的自动化运维体系让服务器的可替换性变得更加简单。gydtep 发表于 2021-10-27 07:49:00
在应用架构中,我们需要避免将静态环境信息,比如IP,mac地址等与应用逻辑耦合。在微服务架构中,可以利用 Zookeeper/Nacos 等实现服务的注册发现;在 Kubernetes 中,我们可以通过 Service,Service Mesh 减少对服务端点IP的依赖。此外,对应用状态的持久化也尽可能通过分布式存储或者云服务等实现,这样可以大大提升应用架构可伸缩性和自愈能力。gydtep 发表于 2021-10-27 10:54:14
此外是 “Fail fast, fail small, recover quickly” 。立即失效(Fail fast)是一个非常反直觉的设计原则,它背后的哲学是既然故障无法避免,问题越及早暴露、应用越容易恢复,进入生产环境的问题就越少。采用了 Fail-fast 策略以后,我们的关注点将从如何穷尽系统中的问题转移到如何快速地发现和优雅处理失败。gydtep 发表于 2021-10-27 16:59:13
是微软给出的答案。Dapr 是一个事件驱动的,可移植的,构建微服务应用的运行时环境。支持应用在云或边缘部署,支持语言与框架的多样性。Dapr利用 Sidecar 的模式,把应用逻辑中的一些横切关注点需求(Cross-cutting)分离和抽象出来,从而达到应用与运行环境的解耦以及对外部依赖(包括服务之间)的解耦。gydtep 发表于 2021-10-28 09:39:58
Workflow Orchestration 工作流编排:以阿里云 Serverless 工作流为例,可以通过一个声明式的业务流程来编排任务。这种方式简化了开发和运行业务流程所需要的任务协调、状态管理以及错误处理等繁琐工作,让开发者聚焦于业务逻辑开发。gydtep 发表于 2021-10-28 16:46:14
可以看到,Tunnel是属于API层的一个组件,专门负责数据的上传和下载。为什么这么做, 是因为这是一个大数据的系统,所以在MaxCompute上跑一个SQL其实就发了一条控制指令。gydtep 发表于 2021-10-29 09:45:44
批量上传的API现在是支持Transactional表,但是只支持append,也称为insert into,它是不能从Tunnel的API上去update的。流式的也正在规划中,后续可能会连update也一起完成。批量的可能不会做update这个功能,但是批量的现在就可以append这种Transactional表。gydtep 发表于 2021-10-29 13:38:45
Upload session可以理解为是一个会话的对象,类似于transaction的概念。这次上传是以upload session为单位的,即最终upload session commit成功了这些数据才是可见的。gydtep 发表于 2021-10-30 09:39:01
同时系统还支持了内存的复用,即flush过以后的pack是可以复用的。系统会把上次写满的内存留住,避免产生GC。流式上传只支持InsertInto,因为在API上没有另外的接口,所以InsertOverwrite语义现在是不支持的。