微服务必备知识: 微服务

简介: 在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是微、什么是服务,微,狭义来讲就是体积小、著名的;2 pizza 团队很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有参与人从设计、开发、测试、运维所有人加起来 只需要2个披萨就够了 )。 而所谓服务,一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。

所属技术领域:

微服务

|发展历程|

上世纪 80 年代初,第一种重要的系统分发技术 “远程过程调用 (RPC)” 诞生的时候。RPC 是 Sun Microsystems 最初的 ONC RPC 背后的设想理念,也是 DCE(1988 年)和 CORBA(1991 年)背后的基本理念。
自 1999 年推出 Enterprise Java(奇怪的是版本为 1.2)以来,应用程序所有者与应用程序管理员之间的关系就一直很紧张。
该模式是 Martin Fowler 最初在 2004 年提出的,他在多年后才开始研究微服务)。他的概念被称为 “Strangler Application 模式”,旨在解决您几乎从未实 际生活在 green field 的事实。最需要微服务的程序是网络上最大和最烦人的程序,但是同样地,利用网络的架构可为我们带来一 种管理所需重构的策略。
Circuit Breaker 最初记录在 Michael Nygard 于 2007 年发表的图书《Release It!》中。

|名词定义|

在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是"微"、什么是"服务",微,狭义来讲就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释(2 pizza 团队最早是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,所有参与人从设计、开发、测试、运维所有人加起来 只需要2个披萨就够了 )。 而所谓服务,一定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户可以感知最小功能集。

|技术特点|

 微服务设计原则
1.单一职责原则
意思是每个微服务只需要实现自己的业务逻辑就可以了,比如订单管理模块,它只需要处理订单的业务逻辑就可以了,其它的不必考虑。
2.服务自治原则
意思是每个微服务从开发、测试、运维等都是独立的,包括存储的数据库也都是独立的,自己就有一套完整的流程,我们完全可以把它当成一个项目来对待。不必依赖于其它模块。
3.轻量级通信原则
首先是通信的语言非常的轻量,第二,该通信方式需要是跨语言、跨平台的,之所以要跨平台、跨语言就是为了让每个微服务都有足够的独立性,可以不受技术的钳制。
4.接口明确原则
由于微服务之间可能存在着调用关系,为了尽量避免以后由于某个微服务的接口变化而导致其它微服务都做调整,在设计之初就要考虑到所有情况,让接口尽量做的更通用,更灵活,从而尽量避免其它模块也做调整。
 微服务优势与缺点

  1. 特性
    每个微服务可独立运行在自己的进程里;
    一系列独立运行的微服务共同构建起了整个系统;
    每个服务为独立的业务开发,一个微服务一般完成某个特定的功能,比如:订单管理,用户管理等;
    微服务之间通过一些轻量级的通信机制进行通信,例如通过REST API或者RPC的方式进行调用。
  2. 特点
    易于开发和维护
    启动较快
    局部修改容易部署
    技术栈不受限
    按需伸缩
  3. 缺点
    运维要求较高
    分布式的复杂性
    接口调整成本高
    重复劳动
     微服务开发框架
    目前微服务的开发框架,最常用的有以下四个:
    Spring Cloud:http://projects.spring.io/spring-cloud(现在非常流行的微服务架构)
    Dubbo:http://dubbo.io
    Dropwizard:http://www.dropwizard.io (关注单个微服务的开发)
    Consul、etcd&etc.(微服务的模块)

    |资料来源|

发展历程:
https://www.ibm.com/developerworks/cn/cloud/library/cl-evolution-microservices-patterns/index.html

相关文章
|
2月前
|
人工智能 运维 安全
告别 Claude Code 封禁与限流!阿里云 OpenCode 开源AI编程能力、部署教程、替代优势全解
随着AI工程化开发全面普及,Claude Code凭借超长上下文、全仓库理解、自主工程迭代能力,一度成为全球开发者首选的命令行AI编程智能体。但对于国内开发者而言,Claude Code存在诸多无法规避的硬性短板:海外节点访问不稳定、必须依赖代理网络、账号风控封禁频繁、商用成本高昂、无本土化适配、数据存在跨境泄露风险。尤其官方持续收紧国内访问权限,大量开发者面临工具无法使用、项目迭代中断的困境。
414 1
lyL
|
9月前
|
项目管理 开发者
业务架构图
本文介绍了业务架构图的核心概念与绘制方法,涵盖业务定义、架构分层(组织层、基础能力层、业务能力层、业务应用层)、模块划分与功能分解,并强调通过分层、分模块、分功能三步法实现业务的抽象与结构化表达,提升客户理解与开发效率。
lyL
980 1
业务架构图
|
2月前
|
人工智能 前端开发 搜索推荐
别再傻傻做视频啦!!!52.1k Star Remotion,把 React 组件变成视频生产线,强到离谱~~
Remotion 是一个用 React 程序化生成视频的开源项目,适合模板化视频、数据驱动视频、产品内嵌播放器和批量渲染场景。
330 0
|
9月前
|
敏捷开发 Dubbo Java
需求开发人日评估
本文介绍敏捷开发中工时评估的关键方法——人日估算。涵盖开发、自测、联调、测试及发布各阶段的时间分配,并提供常见需求如Excel导入导出、单表增删改查、跨服务调用等的参考人日,助力团队科学规划迭代周期。(238字)
 需求开发人日评估
|
前端开发 Java Maven
Spring 和 Spring Boot 之间的比较
本文对比了标准Spring框架与Spring Boot的区别,重点分析两者在模块使用(如MVC、Security)上的差异。Spring提供全面的Java开发基础设施支持,包含依赖注入和多种开箱即用的模块;而Spring Boot作为Spring的扩展,通过自动配置、嵌入式服务器等功能简化开发流程。文章还探讨了两者的Maven依赖、Mvc配置、模板引擎配置、启动方式及打包部署等方面的异同,展示了Spring Boot如何通过减少样板代码和配置提升开发效率。总结指出,Spring Boot是Spring的增强版,使应用开发、测试与部署更加便捷高效。
1852 11
|
设计模式 开发者
开发者必知的18种设计模式(图文)
开发者必知的18种设计模式(图文)
759 0
|
安全 算法 小程序
IIFAA技术探索-无感控车
本文对数字车钥匙领域常见的无感入车技术进行介绍,主要包括行业现状、技术发展方向以及IIFAA团队在探索中遇到的问题和相应的解决思路
29065 0
IIFAA技术探索-无感控车
|
Dubbo 关系型数据库 应用服务中间件
微服务架构下分布式事务解决方案 —— 阿里GTS
本文将深入和大家探讨微服务架构下,分布式事务的各种解决方案,并重点为大家解读阿里巴巴提出的分布式事务解决方案----GTS。该方案中提到的GTS是全新一代解决微服务问题的分布式事务互联网中间件。
18318 0
微服务架构下分布式事务解决方案 —— 阿里GTS
|
微服务
分布式、集群、微服务的区别。
>分布式:是根据业务去拆分多个服务,分布式可以把拆分出来的服务放到一台服务器上。 >集群:是整体扩容,部署到多个服务器上,集群一定是有多态服务器,当服务成为性能瓶颈,不能独立扩容,那么久部署到不同的机器上。
1578 0
|
安全 测试技术 API
MobSF移动安全扫描平台环境搭建与试用
MobSF移动安全扫描平台环境搭建与试用
1386 0
MobSF移动安全扫描平台环境搭建与试用