进阶的程序员:微服务架构快速指南
来源:慕容千语     阅读:472
云上智慧
发布于 2019-08-22 01:11
查看主页

欢迎关注专栏:Java架构技术进阶。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。微信公众号:慕容千语的架构笔记。欢迎关注一起进步。

微服务(Microservice)架构快速指南

1. 什么是软件架构?
  软件架构是一个包含各种组织的系统组织,这些组件包括 Web服务器, 应用服务器, 数据库,存储, 通讯层), 它们彼此或者和环境存在关系。

2.什么是微服务架构?
  微服务是指开发一个单个 小型的但有业务功能的服务,每个服务都有自己的解决和轻量通讯机制,可以部署在单个或者多个服务器上。

微服务也指一种种松耦合的、有肯定的有界上下文的面向服务架构。也就是说,假如每个服务都要同时修改,那么它们就不是微服务,由于它们紧耦合在一起;假如你需要掌握一个服务太多的上下文场景使用条件,那么它就是一个有上下文边界的服务,这个定义来自DDD领域驱动设计。

3. 微服务优点是什么?

4. 微服务架构的缺点是什么?

5. 微服务适合哪种情况?
  当你需要支持桌面 web 移动 智能电视 可穿戴时都是可以的,甚至将来你可能不知道但需要支持的某种环境。

6. 哪个公司或者产品使用微服务架构?
  大部分大型网站系统如Twitter, Netflix, Amazon 和 eBay都已经从传统整体型架构monolithic architecture迁移到微服务架构

7. 微服务之间是如何独立通讯的?
  这依赖需求,通过使用HTTP/REST,数据格式使用JSON 或者 Protobuf(Binary protocol),通讯协议是自由的。

8. 为什么现在每个人都在谈论微服务?
  自从SOA面试15年来,随着RESTful web服务和JSON数据交换格式流行,简单快速建立一个可连接的服务已经越来越方便了。

开发方式影响

随着持续交付概念推广以及Docker容器普及,微服务将这两种理念和技术结合起来,形成新的微服务+API + 平台的开发模式,提出了容器化微服务的持续交付概念。

下图传统Monolithic的DevOps开发队伍方式:

这种整体型架构要求产品队伍横跨产品管理 Dev开发 QA DBA 以及系统经营管理,而微服务架构引入以后,如下图:

微服务促进了DevOps方式的重组,将一个大臃肿的整体产品开发队伍切分为根据不同微服务的划分的产品队伍,以及一个大的整体的平台队伍负责经营管理,两者之间通过API交互,做到了松耦合隔绝。

因为Docker引入,不同的微服务可以使用不同的技术架构,比方Node.js Java Ruby Python等等,这些单个的服务都可以独立完成交付生命周期,如下:

微服务案例

Netflix的微服务架构如下,着重全球分发 高可扩展性和可用性:

Twitter的微服务架构,注重高效的可扩展的数据中心:

欢迎关注专栏:Java架构技术进阶。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。微信公众号:慕容千语的架构笔记。欢迎关注一起进步。

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
程序员是大家常自嘲叫码农的阶段!那么一个普通程序员到顶级的CTO都要经历哪些阶段?
【新番动漫资源下载神器】DMHY for Mac中文版使用教程
10 分钟让你明白 MySQL 是如何利使用索引的?
为什么学Web前台?选择Web前台理由!
《Objective-C高级编程》温故知新之 自动引使用计数
首页
搜索
订单
购物车
我的