微服务简介

最近,微服务这个概念越来越流行,很多企业开始选择微服务作为自己新的架构。

那么,什么是微服务呢?

我们先来看一下架构大神martin fowler对微服务的解释。

The term "Microservice Architecture" has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services.

While there is no precise definition of this architectural style, there are certain common characteristics around organization around business capability, automated deployment,

intelligence in the endpoints, and decentralized control of languages and data.

在这里我需要给英文不好的朋友解释一下,其实总结下来,就这么几个关键字。

1. 微服务是系统架构上的一种设计风格

2. 它将一个独立的系统拆分成多个小型的服务,每个服务都可以独立部署

3. 去中心化

4. 服务之间通过RESTful API进行通信协作

 

微服务的好处:

1. 为了解决单体系统变臃肿之后难以维护的问题

2. 将系统拆分成不同的模块,每个服务能独立部署和扩展,由于每个服务都运行在自己的进程内,其更新

    不会影响其他服务的运行

3. 由于每个服务是独立部署的,我们可以更准确地位每个服务评估性能容量,更准确地发现服务与服务之间,以及系统中的瓶颈位置

 

由于微服务的架构根据每个公司或个人不同而不同,并没有非常通用的统一标准,但是,下面的九大特性在大家架构为服务时,起到一定的指导作用。

 

1. 服务组件化(Componentization via Services)

  组件可以独立更换和升级

 

2. 按业务组织团队(Organized around Business Capabilities)

  而不是以往的按技术层面(DBA, 运维, 后端, 前端)

 

3. 做产品的态度(Products not Projects)

  需要用做产品的态度来对待每一个微服务

  you build, you run it

 

4. 智能端点和哑通道(Smart endpoints and dumb pipes)

  由于服务不在一个进程中,互相间的通信必须简单高效

 通常两种服务调用方式:

 1) Http RESTful API

 2) 轻量级消息总线(RabbitMQ, Kafka)

 

5. 去中心化治理(Decentralized Governance)

 

6. 去中心化管理数据(Decentralized Data Management)

  把原本存储在MySql中的表拆分后,存储到多个不同的MySql实例中

 

7. 基础设施自动化(Infrastructure Automation)

 

8. 容错设计(Design for failure)

 

9. 演进式设计(Evolutionary Design)

 

时间: 2024-09-24 19:14:52

微服务简介的相关文章

微服务技术栈选型,看了这个别的可以不用看了

前言 大家好,我是敖小剑,今天给大家分享的主题是"利用开源社区打造微服务生态体系". 主要内容如下: 内容分为三个大的部分: 1. 微服务的核心技术 2. 目前可选的开源微服务框架 3. 为微服务提供支撑的基础设施 需要说明的是,由于时间有限,而分享的内容数量太多,因此: 1. 内容都只是罗列,不展开具体介绍 2. 个人知识面有限,列举过程中范围覆盖不足有所遗漏是必然的 3. 部分场景我会给出一些个人建议,但是请注意这些都是我的一家之言,仅供参考 下面列出的是今天将会介绍的内容,数量非

《Spring Cloud与Docker微服务架构实战》配套代码

不才写了本使用Spring Cloud玩转微服务架构的书,书名是<Spring Cloud与Docker微服务架构实战> - 周立,已于2017-01-12交稿.不少朋友想先看看源码,现将代码放出. 本次放出的代码: 共计70+个DEMO 覆盖Eureka.Ribbon.Feign.Hystrix.Zuul.Spring Cloud Config.Spring Cloud Bus.Spring Cloud Sleuth.Docker.Docker Compose等. 1-11章代码地址: ht

如何提高微服务架构的可用性

业界通常用多少个9来衡量系统的可用性,如99.99%表示一年中有1小时左右的不可用时间.任何一个服务的可用性都不会是100%,意味着在服务运行时间里还是有可能发生故障.当把功能集中且运行在同一个应用中的单体架构拆分成多个相互独立的微服务架构后,虽然可以降低一损俱损的全局性故障风险,但由于微服务之间存在大量的依赖关系, 随着微服务个数的增多,依赖关系也将会变得越来越复杂,而且每个微服务都有可能发生故障,如果不能做好相互依赖的隔离,避免故障的连锁反应,结果可能比单体更糟糕.假设有100个微服务,并且

老司机带你玩PPmoney微服务【加强版】

前言 大家晚上好,今天给大家分享的内容是 PPmoney 微服务之路. 首先简单介绍一下,我是来自 ppmoney 的资深架构师 敖小剑,目前负责 ppmoney 的基础架构和服务化推进. 今天分享的内容主要有四个部分: 首先,介绍了一下为什么要选择微服务架构 其次,讲一下我们微服务框架的技术选型 第三,介绍微服务生态中的支撑体系 第四,旧有系统的迁移改造 第一部分 为什么要选择微服务架构 我们先开始第一部分的内容:为什么要选择微服务架构? 先简单介绍一下我们公司--PPmoney(万惠). 4

微服务应用容器化场景中常见问题总结

简介 云原生技术栈是下一代应用转型的必然选择,它包含了微服务架构,DevOps和容器技术.对于微服务架构来说,应用是"第一公民",他逐渐蚕食原来底层软件或者硬件的功能,例如服务注册与发现以及负载均衡:而对于容器平台来说,容器是"第一公民",他提供了容器注册与发现和负载均衡,同时容器技术将应用和外面的世界做了隔离,这样很多应用运行的假设就会失效.那当微服务应用运行在容器中的时候,我们会遇到哪些常见问题?我们又该如何解决呢? 企业应用在向微服务架构转型的过程中,微服务如

微服务、SOA和API对比与分析

本文讲的是微服务.SOA和API对比与分析[编者的话]对比微服务架构和面向服务的架构(SOA)是一个敏感的话题,常常引起激烈的争论.本文将介绍这些争论的起源,并分析如何以最佳方式解决它们.然后进一步查看这些概念如何与 API 管理概念结合使用,实现更敏捷.更分散化.更具弹性的企业架构. 1 简介 在对比微服务架构和面向服务的架构(SOA)时,几乎不可能在它们彼此的关系上达成一致意见.如果应用程序编程接口(API) 再加入混战,就会让理解它们的差异变得更加困难.一些人可能会说这些概念完全不同,它们

微服务架构下的分布式数据管理

1.1 分布式数据管理之痛点 为了确保微服务之间松耦合,每个服务都有自己的数据库, 有的是关系型数据库(SQL),有的是非关系型数据库(NoSQL). 开发企业事务往往牵涉到多个服务,要想做到多个服务数据的一致性并非易事,同样,在多个服务之间进行数据查询也充满挑战. 我们以一个在线B2B商店为例,客户服务 包括了客户的各种信息,例如可用信用等. 管理订单,提供订单服务,则需要验证某个新订单与客户的信用限制没有冲突. 在单体应用中,订单服务只需要使用传统事务交易就可以一次性检查可用信用和创建订单.

微服务治理实战:服务流的自动化构建与应用

本文根据DBAplus社群第89期线上分享整理而成.   讲师介绍  张真 宜信技术研发中心高级架构师   目前负责金融基础服务.微服务架构演进/计算平台.DevOps平台等. 曾任IBM,负责云计算.应用服务器等,拥有多个国际专利.开源社区活跃贡献者.   主题简介: 服务流及微服务架构下服务流构建的挑战 自动化构建(微)服务流 自动化构建服务流的应用场景   先谈谈这个话题的早期背景,作为一个发展了十年的企业,我们公司内部存在大量的系统,这些系统可能包括多种架构,多种技术栈,它们互相关联,互

微服务的流程自动化测试设计 | 叶婉婷

大家好,我是来自普元的叶婉婷.今天由我来和中生代技术的朋友分享一下流程微服务的自动化测试.首先,我给大家分享一下普元多年实践的自动化测试过程与方法:阐述一下我们的测试理念:测试一切.测试驱动开发.测试自动化:1)测试一切文档.配置.环境.发布包,一切皆代码,这个很好理解,我不再赘述:2)测试驱动开发测试提前,敏捷协作,测试用例同步开发:3)测试自动化多种测试技术能力.组件化开发.统一管理,不间断测试执行:为了实现测试驱动开发.测试自动化,我们认为需要以下四个要素:1)敏捷协作的过程:2)测试设计