内容简介:微服务架构提供了将大型应用拆分为多个可相互作用的更小服务的一种手段.每个服务独立交付,因此每个服务可以脱离主体,独立部署升级拓展替换.服务间通信通常依赖HTTP调用网络连接.
微服务架构提供了将大型应用拆分为多个可相互作用的更小服务的一种手段.
每个服务独立交付,因此每个服务可以脱离主体,独立部署升级拓展替换.
服务间通信通常依赖HTTP调用网络连接.
Web sockets,
message queues
pub/sub
RPC
也可以用于连接独立组件.
每个独立服务专注单一任务,通常按内务单元区分,受 RESTful 规范制约.
课程目标是详述在微服务潮流下开发一款应用. 这里侧重怎么做而较少讨论为什么这么做. 微服务很难. 他们有很多挑战和问题难以解决. 开始拆分你的大块应用前牢记这一点.
利
Separation of concerns 关注分离
服务间清晰的分离, 开发可以更容易专注他们的专长领域,比如 语言,框架, 依赖, 工具, 还有 构建管道.
例如, 一个 前端 JavaScript 工程师可以开发面向客户的视图,不需要理解后端 API 之下的代码.他可以自由选择语言框架, 只需要和后端交流通过异步请求消费 RESTful API.
换句话说, 鉴于服务凭借 APIs 通讯开发可以将服务看做一个黑盒, 将实现和复杂隐藏.
也就是说, 这是一个很好的理念来创建全机构的标准来确保每一团队可以一起工作运行--比如代码质检和风格检查, 代码检查, API 设计.
清晰的分离意味着错误最大限度的锁定在开发工作的服务内. 因此,你可以分配给初级 程序员 非关键服务,即使服务挂掉,整个应用也不受影响.
因为每个服务独立部署,更少的耦合也是的扩展更容易. 对消除团队等待另一个所依赖的团队完成工作现象有一定帮助.
更小的代码库
更少代码库对更容易理解有益,因为不需要掌握整个系统. 只需要 固化 API 设计, 这意味着微服务栈中通常可以更快开发更容易测试重构和拓展. 记住, 在所有服务站维护一致的代码标准很重要,因此对于开发中从一个服务转到另一个服务很容易.
加速反馈闭环
微服务中,开发掌握应用的整个生命周期,从立项到交付.替换团队调整使用特定的技术集--比如客户端UI, 服务端, 等等. 因为这样他们可以更清晰的看到应用在真是环境中如何使用. 这加速了反馈闭环, 更容易修复 bugs 和迭代.
弊
设计复杂
决定分离你应用的一块到微服务不是一个容易的任务. 通常重构为一个独立的模块在全部大块中更容易, 而不是分出去.
一旦你分出去没有回头路.
网络复杂
在一个大块应用,通常所有事在一个单独的线程,所以不需要很多次调用其它服务. 由于你拆分你的应用为微服务, 你会发现你现在不得不将函数调用改为网络调用.
这会导致很多问题特别是如果多个应用需要和其他服务通信, 结果在网络请求方面产生乒乓效应. 你也不得不考虑服务的整体下降.
基础设施 infrastructure
多服务下,复杂转化从数据库到平台和基础设施. 消耗很大. 而且,不得不使用正确的 工具 和适当的人力资源来管理.
数据持久化
多数应用有类似状态层,像数据库任务队列. 微服务栈也需要跟踪服务在哪里销毁和全部被摧毁的实例,这样,当一个特定服务的新实例启动时, 通信量可以适当的调整. 这通常称为服务发现.
由于我们将处理容器, 我们需要特别关注如何处理状态容器因为他们不应下降.
隔离一个特定服务的状态使得他不被分享或复制是一个难以描述的困难. 你不得不经常处理各种不同来源的事实,不得不频繁的调解. 再说一次, 归结为设计.
集成测试
通常, 开发微服务架构, 你不能完整测试所有服务直到你部署到预发或生产服务器. 获取反馈的时间花费太长. 幸运的是, docker 通过更容易的连接小的独立的本地服务有助于加速这一过程.
日志, 监听, 和调试同样困难.
跟多微服务测试, 参考 Testing Strategies in a Microservice Architecture
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 服务端指南 服务端概述 | 微服务架构概述
- 微服务化之服务拆分与服务发现
- 微服务化之服务拆分与服务发现
- 小白入门微服务(4) - 服务注册与服务发现
- 服务端指南 服务端概述 | SOA 对比微服务架构
- MySQL服务启动时显示本地计算机上的MySQL服务启动后停止。某些服务在未由其它服务或。。。
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript经典实例
Shelley Powers / 李强 / 中国电力出版社 / 2012-3 / 78.00元
《JavaScript经典实例》各节中的完整代码解决了常见的编程问题,并且给出了在任何浏览器中构建Web应用程序的技术。只需要将这些代码示例复制并粘贴到你自己的项目中就行了,可以快速完成工作,并且在此过程中学习JavaScript的很多知识。你还将学习如何利用ECMAScript5和HTML5中的最新功能,包括新的跨域挂件通信技术、HTML5的video和audio元素,以及绘制画布。《JavaS......一起来看看 《JavaScript经典实例》 这本书的介绍吧!