掌握系列之微服务-1.概念

掌握高并发、高可用架构

第四章 微服务

本章介绍微服务的概念、为何要引入微服务、微服务会引发的问题,以及流行的微服务架构等。

第一节 微服务基础

微服务

1. 微服务的定义

Martin Flower在2014年的一篇论文《MicroServices》中提出的,在某种程度上微服务是面向服务的架构SOA继续发展的下一步,它是一些协同工作的小而自治的服务,很小,专注于做好一件事,具有自治性,其主要特点是:

  • 与组织结构相匹配,每个服务可按照业务、团队进行划分,使小的团队在小的代码库上高效工作
  • 可组合性,易于重用已有功能
  • 技术异构性,每个服务不限制开发语言,不限制使用的数据库,服务之间通过轻量级API调用
  • 简化部署,每个服务独立部署,服务之间互不影响,管理自动化
  • 弹性扩展,可针对用户访问流量大的服务单独扩展,从而节约资源
  • 对可替代性的优化,微服务中的多个相似服务,重写或移除一个或多个服务的阻碍会很小
2. 引入微服务会面临的挑战

虽然微服务看上去很美好,但引入微服务需要考虑以下几个问题

  • 微服务强调服务大小,但没有一个统一标准,大多是根据经验来划分业务模块。要记住,微服务是达到目的的手段,而不是目标
  • 微服务的部署必然是分布式的,这会造成程序的复杂性。分布式事务、网络延迟、系统容错、服务之间的通信,以及服务发现、调用链跟踪和代码质量
  • 微服务架构下,不同的服务可能使用不同的数据库。CAP(分布式环境下,一致性Consistency、可用性Availablity、分区容错性Partition tolerance)原则的约束,使得不得不放弃强一致性,转而接受最终一致性
  • 对测试的挑战
  • 跨服务的系统变更
  • 部署,微服务由不同的大量服务构成,每种服务都有自己的配置、应用实例数量以及基础服务地址,所以我们需要统一的配置中心,服务发现机制,以及更好的部署策略和高度自动化水平

所有的挑战体现在微服务的每一个细节

  • API网关 Gateway
  • 服务间调用
  • 服务发现
  • 服务容错
  • 服务部署
  • 数据调用
3. 微服务的七大原则
  • 围绕业务概念建模
  • 接受自动化文化
  • 隐藏内部实现细节
  • 去中心化
  • 独立部署
  • 设计故障模式
  • 高度跟踪

原文地址:https://blog.51cto.com/liusw94/2434583

时间: 2024-11-11 04:53:15

掌握系列之微服务-1.概念的相关文章

Spring-cloud微服务实战【一】:微服务的概念与演进过程

本文是一个系列文章,主要讲述使用spring-cloud进行微服务开发的实战.在开始之前,我们先说一下从传统的单一部署架构到微服务的发展过程,以便让童鞋们更好的理解微服务的概念与演进过程. 1.单体架构   在互联网时代早期,彼时还没有微服务的概念,企业开发应用,将所有功能都集中到一个应用中,典型的特征是tomcat + servlet + jsp + mysql,然后将应用打包成一个war包发布. ![file](https://img2018.cnblogs.com/blog/1924225

微服务介绍及Asp.net Core实战项目系列之微服务介绍

0.目录 整体架构目录:ASP.NET Core分布式项目实战-目录 一.微服务选型 在做微服务架构的技术选型的时候,以"无侵入"和"社区活跃"为主要的考量点,将来升级为原子服务架构.量子服务架构的时候.甚至恢复成单体架构的时候,代价最小. 软件开发只需要组装,不再需要从头开发. 选型可以参考一下张队长的文章:https://mp.weixin.qq.com/s/UIFjm7W6bDfdmjpeMVJtqA 二.微服务架构是什么? 每一个微服务都是一个零件,并使用这

微服务基础概念认知总结

由于从未使用过Spring Cloud.Dubbo等微服务框架,所以只能不断地从微服务基础知识出发,不让自己局限于某一种工具框架上.以下知识摘自一些自己看过的微服务相关的书上,还有一些自己对微服务的理解. 单体应用存在的问题 复杂性高 单体应用项目包含的模块非常多.模块的边界模糊.依赖关系不清楚.代码质量层次不齐.混乱地堆砌在一起.每次修复BUG或者新增功能,涉及的部分比较多,存在着隐含的缺陷,有可能一小部分的改变会影响到其他功能. 技术债务 虽然时间的推移.需求变更和人员的更迭,会逐渐形成应用

小马哥-Java 微服务实践 - Spring Boot 系列-01Java 微服务实践 - Spring Boot 系列(一)初体验

课程github地址 https://github.com/mercyblitz/segmentfault-lessons 传统的web应用架构.微服务是一种架构.不限定什么语言 单体应用和微服务的对比 SOA 微服务的发展史 rpc更讲究面向接口 socket更面向于底层 分布式的,也叫作进程外的 业务处理的结果一般返回给服务组件. rest可以是json.xml.html.为什么很多会会选择json,json的格式比较简单清晰. 微服务面临的挑战 表达式驱动依赖反射驱动 目录概要 demo

我爱java系列---【微服务中feign拦截器的使用】

1.为什么要用feign拦截器? 作用:由于服务整合了oauth2,在被调用时需要传递令牌才能正常调用,feign拦截器的作用就是为了在服务之间传递令牌. 2.feign拦截器怎么用? (1)创建拦截器(一般定义在全局中) 在changgou_common服务中创建一个com.changgou.interceptor.FeignInterceptor拦截器,并将所有头文件数据再次加入到Feign请求的微服务头文件中,代码如下: @Component public class FeignInter

SpringCloud学习系列-Rest微服务构建-整体父工程Project

总体介绍 承接着我们的springmvc+mybatis+mysql初级高级课程,以Dept部门模块做一个微服务通用案例Consumer消费者(Client)通过REST调用Provider提供者(Server)提供的服务    Maven的分包分模块架构   一个Project带着多个Module子模块  MicroServiceCloud父工程(Project)下初次带着3个子模块(Module) microservicecloud-api 封装的整体Entity/接口/公共配置等 micr

微服务基础概念

1 系统架构的演变随着互联网的发展,网站应用的规模不断扩大,常规的应用架构已无法应对,分布式服务架构以及微服务架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 1.1 单体应用架构Web应用程序发展的早期,大部分web工程(包含前端页面,web层代码,service层代码,dao层代码)是将所有的功能模块,打包到一起并放在一个web容器中运行. 比如搭建一个电商系统:客户下订单,商品展示,用户管理.这种将所有功能都部署在一个web容器中运行的系统就叫做单体架构. 优点: 所有的功能集成在一

【CHRIS RICHARDSON 微服务系列】使用微服务重构单体应用-7

编者的话 |本文来自 Nginx 官方博客,是「Chris Richardson 微服务」系列的最后一篇.第一篇介绍了微服务架构模块,并且讨论了使用微服务的优缺点.随后的文章讨论了微服务的不同方面,包括使用 API 网关.进程间通讯.服务发现.事件驱动的数据管理,以及部署微服务.本篇将讨论从单体应用迁移到微服务的策略. 作者介绍:Chris Richardson,是世界著名的软件大师,经典技术著作<POJOS IN ACTION>一书的作者,也是 cloudfoundry.com 最初的创始人

【CHRIS RICHARDSON 微服务系列】事件驱动的数据管理-5

编者的话 |本文来自 Nginx 官方博客,是「Chris Richardson 微服务」系列的第五篇文章.第一篇文章介绍了微服务架构模式,并且讨论了使用微服务的优缺点:第二和第三篇描述了微服务架构模块间通讯的不同方面:第四篇研究了服务发现中的问题.本篇研究微服务架构带来的分布式数据管理问题. 作者介绍:Chris Richardson,是世界著名的软件大师,经典技术著作<POJOS IN ACTION>一书的作者,也是 cloudfoundry.com 最初的创始人,Chris Richar