微服务必备知识: 微服务

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,182元/月
简介: 在介绍微服务时,首先得先理解什么是微服务,顾名思义,微服务得从两个方面去理解,什么是微、什么是服务,微,狭义来讲就是体积小、著名的;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

相关文章
|
10月前
|
监控 网络协议 Nacos
Nacos:构建微服务架构的基石
Nacos:构建微服务架构的基石
383 2
|
11月前
|
域名解析 SQL 前端开发
如何使用CMS来搭建一个网站?
在如今的时代,拥有一个网站成为每一家企业展现形象、拓展业务、传递信息的重要途径。网站在互联网上吸引潜在客户、合作伙伴。对于大多数希望自行建设网站的企业来说,内容管理系统(CMS)成为了理想选择。
426 8
|
前端开发 API Docker
前端微服务
前端微服务
381 0
|
存储 运维 持续交付
探索云计算的不同服务模型:IaaS、PaaS、SaaS
【5月更文挑战第23天】本文探讨了云计算的三大服务模型:IaaS、PaaS和SaaS。IaaS提供基础设施租赁,允许用户按需付费,聚焦业务创新而非设备维护。PaaS在IaaS基础上提供开发、测试和部署环境,简化应用管理,支持弹性扩展。SaaS则为用户提供可通过互联网访问的软件应用,实现多租户共享,提升工作灵活性。这三种模型满足了不同用户从基础设施到软件服务的多元化需求。
1454 3
|
10月前
|
存储 缓存 算法
C语言在实现高效算法方面的特点与优势,包括高效性、灵活性、可移植性和底层访问能力
本文探讨了C语言在实现高效算法方面的特点与优势,包括高效性、灵活性、可移植性和底层访问能力。文章还分析了数据结构的选择与优化、算法设计的优化策略、内存管理和代码优化技巧,并通过实际案例展示了C语言在排序和图遍历算法中的高效实现。
269 2
|
消息中间件 API 数据库
详解分布式微服务架构
详解分布式微服务架构
|
11月前
|
负载均衡 算法 Java
微服务架构
微服务架构
188 2
|
存储 Kubernetes 负载均衡
Docker
是一个开源的容器化平台,它可以让开发者和系统管理员轻松地创建、部署和运行应用程序。Docker使用操作系统级别的虚拟化技术,可以将应用程序及其依赖项打包到一个称为Docker容器的单个可移植包中,从而实现应用程序的隔离、移植性和可重复性。
2873 2
|
前端开发 JavaScript API
ES6和ES5的区别
ES6和ES5的区别
209 0
|
分布式计算 Hadoop 开发工具
docker 部署 hadoop集群
docker 部署 hadoop集群