微服务学习(一):微服务介绍

目录如下

  1. 软件架构的进化
  2. 微服务的优势和不足
  3. 微服务架构所带来的问题及解决方案

1.软件架构的进化

于笔者经历来看 架构大致从
单体架构 》MVC 》 微服务

  • 单体架构

    单体架构特点在于所有功能业务打包在一个发布包里,部署在一个web容器中,运行在一个进程里。单体架构的优点在于

    • 容易开发 -- 一个人就可以写了,但是你想想这个后期其他人维护。。。。
    • 容易测试 -- 所有功能都在一个进程里嘛,测试就简单了
    • 容易部署 -- 比如一个war包 丢服务器上就好了
      缺点
    • 维护困难 -- 代码量之后越来越庞大,新人根本难以上手,不知道经过多少人修改过。。
    • 部署困难 -- 随着代码变得庞大,部署和启动的时间也会变长
    • 不稳定 -- 牵一发而动全身,一个错误就gg
    • 扩展不灵活 -- 垂直扩展非常困难
  • MVC

    MVC这个名词曾经困扰了笔者很久,根本理解不来这三个英文单词的拼写,笔者认为这些名词拿出来就是让别人看不懂的,根本不需要去想Model,View,Controller这几个名词所代表的含义,它的出现解决了代码杂乱无章,职责不清晰的问题,通过在各层之间定义接口,再将接口与实现分离,可以更好替换实现方案,也更容易让别人看懂代码,近期常见的SSM与SSH就是MVC的实现。

  • 微服务

    什么是微服务呢?
    其实微服务就是一种架构风格。比较官方的定义就是从马丁大叔的博客中取得

    使用一系列微小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯互联机制,并且可以通过自动化的方式部署

    综合马丁大叔的这段话,笔者认为微服务主要特点就在于

    • 一系列微小的服务
    • 独立的进程
    • 轻量级的通讯
    • 自动化部署

    那么什么样的服务可以叫做微服务--也就是单指其中一个服务
    特征在于

    • 单一职责 -- 例如只有注册登录可以放在一个服务里,商品服务就别扔进来了
    • 轻量级通讯 -- 语言无关,平台无关
    • 隔离性 -- 运行在自己的进程中
    • 独立数据源 -- 就是有自己独立的数据库
    • 技术多样性 --跨语言的嗷~~

2.微服务的优势与不足

  • 优势
  • 独立性 -- 每个服务接收到的访问量也就是QPS是不同的,因为进程独立的原因,我们可以为其单独配置硬件环境,修改代码也不会影响别人
  • 敏捷性 -- 可以快速进行开发,每一个微服务都很简单(不然拆分出来干啥)
  • 不足
  • 如何进行服务拆分 -- 就。。很难
  • 数据一致性 -- 不同于单体只有一个数据库,微服务有很多数据库(有关这个大家可以去看一下什么叫CAP理论)
  • 沟通成本 -- 也就是服务间的调用沟通

3.微服务带来的问题及解决方案

  • 微服务之间如何通讯

    1.httpclient进行通讯
    2.RPC--远程过程调用,调用远程服务和本地服务一模一样,调用实现对用户透明

  • 微服务之间如何发现彼此

    微服务的发现分 服务端发现和客户端发现,SpringCloud就是服务端发现,Dubbo就是客户端发现,微服务的发现需要有一个服务发现和注册中心,即SpringCloud采用的eureka和Dubbo所采用的zookeeper,各个微服务将自己注册到服务发现注册中心,服务发现注册中心将他们记录之后,通过服务注册中心,微服务们就可以互相发现和调用彼此。

  • 微服务之间如何部署,扩容,更新

    有关此问题将在后面章节中具体阐述,本章只作简略描述
    为解决此问题,我们就必须认识一个名词叫做服务编排,服务编排就解决了微服务遇到的部署更新和扩容问题,而现在也有许多服务编排的工具例如Mesos,Docker Swarm,Kubernetes等。

原文地址:https://www.cnblogs.com/hello-jjj/p/11111819.html

时间: 2024-10-05 07:18:20

微服务学习(一):微服务介绍的相关文章

微服务学习笔记(一)

什么是六边形架构 “六边形架构”是 Cockburn大牛在2005年 提出的.该架构提供了一种将业务逻辑和具体输入输出技术分离的模式. 为什么采用微服务 现在大多数开发一个应用,哪怕是类似Uber或者淘宝的应用.基本上都是已单体模式开发.虽然在应用自身架构上采用了模块化设计,但在本质上他还是一个单体应用. 例如:如下图 这样的单体应用不好吗? 上图,是比较经典优秀的单体六边形架构.在很多公司实际上因为各种原因单体应用架构还没有达到这个水平.所以会有以下几个方面问题 1. 整体扩展性差,当应用越来

微服务学习和认识

微服务学习和认识 1.什么是微服务 微服务架构风格:是一类将单一应用程序作为由众多小型服务构成之套件加以开发的方式,其中各项服务都拥有自己的进程并利用轻量化机制(通常为HTTP源API)实现通信.这些服务围绕业务功能建立而成,且凭借自动化部署机制实现独立部署.这些服务匹配一套最低限度的中央式管理机制,且各服务可通过不同编程语言编写而成并使用不同的数据存储技术 2.微服务的目 有效的拆分应用,实现敏捷开发和部署 3.微服务的优点 开发简单 技术栈灵活 服务独立无依赖 独立部署.按需扩展 可用性高

微服务学习笔记系列-Spring Cloud优质项目推荐

Spring Cloud微服务架构集大成者,云计算最佳业务实践. image.png Spring Cloud Spring Cloud Config Spring配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储.Git以及Subversion. Spring Cloud Bus Spring事件.消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署. Eureka Netflix云端服务发现,一个基

Chris Richardson微服务翻译:微服务介绍

作者简介:Chris Richardson,世界著名的软件架构师,经典著作<POJOS IN ACTION>的作者,cloudfoundry.com 的创始人 微服务目前正受到大量的关注,成为文章.博客.会议讨论的热点.与此同时,也有人质疑微服务并非新事物,只是SOA(Service Oriented Architecure)的二度封装.无论是追捧还是质疑,微服务架构拥有巨大的优势,尤其是让敏捷开发和复杂的企业应用支付成为可能. 本系列包含7篇文章,介绍了微服务架构的各个因素,了解微服务模型的

最全的spring微服务学习实战项目

学习spring的微服务的模块,包括:服务提供者.服务消费者.服务注册中心.路由网关.统一配置文件管理等. 每个模块都有说明文档,看下基本都知道怎么做,欢迎大家下载点赞,github地址 https://github.com/YaoZhenPeng/fsSpringCloud.git . 因为基于自己学习的目的,还会不断添加微服务.每个微服务可能都是对一个技术的使用学习的笔记,如会写一个专门学习电子流的微服务,学习的技术都会有readMe说明文档. 使不会的人,看一下就能入门学习.如果想加入一起

微服务学习之路(一)——微服务架构

最近一直在学习微服务,毕竟现在大家都在说分布式,集群等,分布式和集群的基本前提是微服务,所以有比较掌握微服务的基本原理. 先看一下微服务架构图,如下图: 微服务主要由以下几个基本组件: 服务描述.注册中心.服务框架.服务监控.服务追踪.服务治理. 1.服务描述 服务调用首先要解决的问题是服务如何对外描述.常用的服务描述包括RESTful API.XML配置已及IDL文件. 2.注册中心 注册中心解决服务的发布和订阅.服务提供者将自己提供的服务以及地址登记到注册中心,服务消费者则从注册中心查询所需

go微服务框架go-micro深度学习(三) Registry服务的注册和发现

服务的注册与发现是微服务必不可少的功能,这样系统才能有更高的性能,更高的可用性.go-micro框架的服务发现有自己能用的接口Registry.只要实现这个接口就可以定制自己的服务注册和发现. go-micro在客户端做的负载,典型的Balancing-aware Client模式. 服务端把服务的地址信息保存到Registry, 然后定时的心跳检查,或者定时的重新注册服务.客户端监听Registry,最好是把服务信息保存到本地,监听服务的变动,更新缓存.当调用服务端的接口是时,根据客户端的服务

JHipster创建微服务及相关微服务架构组件介绍

参考链接: jhipster官网 jdl官方语法文档 JHipster中文文档-CSND博客 在线使用jhipster创建应用 在线使用jdl生成器创建数据表和相应服务端代码 一.创建微服务 微服务是一种JHipster应用程序,它没有前端(必须在网关)上生成Angular前端),并且可以与JHipster Registry一起配置,发现和管理. 创建微服务应用 安装: 安装Java 8 from the Oracle website. 安装Node.js from the Node.js we

微服务架构下的服务发现

编者的话]这是关于使用微服务架构创建应用系列的第四篇文章.第一篇介绍了微服务架构的模式,讨论了使用微服务架构的优缺点.第二和第三篇描述了微服务架构内部的通讯机制.这篇文章中,我们将会探讨服务发现相关问题. 为什么要使用服务发现? 我们设想一下当正在写代码时,使用了提供REST API或者Thrift API的服务,为了完成一次服务请求,代码需要知道服务实例的网络位置(IP地址和端口).传统应用都运行在物理硬件上,服务实例的网络位置都是相对固定的.例如,代码可以从一个经常变更的配置文件中读取网络位