Java 杂谈资深架构师

架构师必备技能:微服务架构

2019-05-08  本文已影响0人  java爪哇

什么是软件架构?

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

架构师必备技能:微服务架构

什么是微服务架构?

微服务是指开发一个单个 小型的但有业务功能的服务,每个服务都有自己的处理和轻量通讯机制,可以部署在单个或多个服务器上。

架构师必备技能:微服务架构

微服务也指一种种松耦合的、有一定的有界上下文的面向服务架构。也就是说,如果每个服务都要同时修改,那么它们就不是微服务,因为它们紧耦合在一起;如果你需要掌握一个服务太多的上下文场景使用条件,那么它就是一个有上下文边界的服务

微服务优点是什么?

架构师必备技能:微服务架构

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

微服务适合哪种情况?

当你需要支持桌面 web 移动 智能电视 可穿戴时都是可以的,甚至将来你可能不知道但需要支持的某种环境。

哪些公司或产品使用微服务架构?

大部分大型网站系统如Twitter, Netflix, Amazon 和 eBay都已经从传统整体型架构monolithic architecture迁移到微服务架构

微服务之间是如何独立通讯的?

这依赖需求,通过使用HTTP/REST,数据格式使用JSON 或 Protobuf(Binary protocol),通讯协议是自由的。

为什么现在每个人都在谈论微服务?

自从SOA面试15年来,随着RESTful web服务和JSON数据交换格式流行,简单快速建立一个可连接的服务已经越来越方便了。

开发方式影响

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

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

架构师必备技能:微服务架构

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

架构师必备技能:微服务架构

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

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

架构师必备技能:微服务架构

微服务案例

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

架构师必备技能:微服务架构

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

架构师必备技能:微服务架构

本文到此结束!喜欢的朋友可以关注一下我,感谢支持以后会持续分享更多的干货

上一篇下一篇

猜你喜欢

热点阅读