微服务概述

前言:今天老板来问我,了解微服务吗?,我送他了个尴尬而又礼貌的微笑,之后赶紧滚回来看看什么是微服务。

微服务概述

什么是微服务?

起源

微服务这一概念出现于2012年,是因软件作者Martin Fowler而流行,他承认这并没有精确地定义出这一架构形式,虽然围绕业务能力、自动化部署、终端智能以及语言和数据的分散控制有一些常见的特性。

背景

在微服务概念形成之前,大多数 web 的应用程序都是使用单一的体系结构风格构建的即单体架构。2014 年左右,微服务的概念被引入到软件开发中,一石激起千层浪,迅速成为当下热门话题之一。

微服务与单体架构的的区别

在了解它们的区别之前先看看架构设计3原则:

合适原则

适合自己的才是最好的,不是微服务火就用微服务,docker火就用docker。盲目追求大而全,最后反而得不偿失;

简单原则

简单不是说技术简单是指简单实用,大而复杂的往往带来风险不可控;

演化原则

什么事物都不是一蹴而就的,没有经验积累直接照搬大厂模式。。。

送上下面两张本人手绘图,略显粗糙不要介意:

我们以客户关系管理(CRM:Customer Relationship Management)应用程序为例:
微服务概述
微服务概述

如上图随着单体CRM应用规模和复杂性的增长,当个别团队做出一点变动时,整个应用程序必须重新构建、测试部署;而微服务是一个小的,松散耦合的的分布式服务。微服
务允许你将一个大型的应用程序分解成易于管理和职责明确的组件。微服务通过将大型代码
分解成小的、定义明确的块,帮助应对复杂性的传统问题。也就是说将应用程序的功能拆分并使它们完全独立。

微服务的特点
  1. 应用逻辑被分解为小粒度的、责任界限明确的组件。
  2. 每个组件都有一个小的责任域,并且完全独立部署。微服务应该有一个业务领域的
    单一职责。同时,微服务应该跨多个应用程序可重用。
  3. 微服务通信基于几个基本原则(注意我说的是原则,没有标准)和采用轻量级的通
    信协议如 HTTP 和 JSON(JavaScript Object Notation)为服务消费者和服务提
    供者之间提供数据交换。
  4. 服务的底层实现与技术无关,因为应用程序总是与技术无关的协议通信(JSON 是
    最常见的)。这意味着使用微服务构建应程序,可以用多种语言和技术。
  5. 微服务具有小的,独立的,天然分布式的特点。允许企业拥有规模小、责任明确的开发
    团队。这些团队可能会朝着一个单一的目标,如发布一个应用程序,但是每个
    团队只负责与该服务相关工作的。
单体架构的优缺点
微服务的优缺点
总结,什么是微服务

微服务是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中,服务间通信采用轻量级通信机制(通常用HTTP资源API)。这些服务围绕业务能力构建并且可通过全自动部署机制独立部署。这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。

为什么基于云的开发?

云究竟是什么?

我们先看云计算中的三种基本模型

  1. Infrastructure as a Service (IaaS) 即基础架构及服务
  2. Platform as a Service (PaaS) 即平台及服务
  3. Software as a Service (SaaS) 即软件及服务
    另外还有功能即服务(FaaS)和容器即服务(CaaS),只看上面的名词是无感的举个例子。
    我现在饿了要吃饭。
    iaas说饭我给你准备好了,但是凉的你自己拿回去加热吃吧
    pass你打开饿了么选一个让小哥给你送过来
    saas你去楼下饭馆吃饭,吃饭付钱拍拍屁股走人
基于微服务的应用为什么与云和微服务相关?

基于微服务架构的核心概念之一是每个服务都作为独立的组件被打包和部署。服务实例
能够快速启动。服务具有隔离性。
不管是阿里云、华为云还是腾讯云创建个实例机都是提示弹性可伸缩,服务器的伸缩性也意味着我们的应用程序可以更具有弹性,根据我们不同时间段的需求调整我们的服务器配置。本文及后续也是基于iaas云提供商的docker容器上面我们提到了iaas、paas等等为什么选择iaas呢。主要是灵活性

怎么使用Spring Cloud 开发微服务?

为什么选择spring?

spring基于依赖注入,我们把类交给spring使spring作为中介管理不同类之间的依赖,spring的本质是让你玩乐高积木一样,组装你的代码。并且spring框架快速上手的优势使它活跃于市场之上,spring的开发团队迎合分布式的需求推出了springCloud便捷了我们的开发

微服务开发

编辑器 idea
构建工具maven
GitHub地址

喜欢的童鞋点个赞欢迎加入我的qq群:893382070一起学习成长