热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

跟我学springboot(二)微服务简介

1.微服务是怎么提出来的

说起微服务,首先需要提起一个人叫martin fowler。进入他的首页:https://martinfowler.com/ 选择->All Sections,进入选择->microservices,我们可以看到这个人在2014年提出来的概念解释。

2.什么是微服务

简而言之,微服务架构风格是将单个应用程序开发为一套小型服务的方法,每个小型服务都在自己的流程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。这些服务围绕业务功能构建, 可通过全自动部署机制独立部署。有一个集中管理的最低限度的这些服务,可以用不同的编程语言和使用不同的数据存储技术。
- 詹姆斯刘易斯和马丁福勒

3.微服务的特点
  • 通过服务进行组件化
  • 围绕业务能力进行组织
  • 产品不是项目
  • 智能端点和哑管
  • 权力下放的治理
  • 分散数据管理
  • 基建自动化
  • 设计失败
  • 进化设计
4.微服务提供的好处
  • 强大的模块边界:微服务增强了模块化结构,这对大型团队尤为重要。
  • 独立部署:简单的服务更易于部署,并且由于它们是自治的,因此在出错时不太可能导致系统故障。
  • 技术多样性:通过微服务,您可以混合使用多种语言,开发框架和数据存储技术。
5.需要付出代价
  • 分布:分布式系统更难编程,因为远程调用很慢并且始终存在故障风险。
  • 最终的一致性:对于分布式系统来说,保持强一致性非常困难,这意味着每个人都必须管理最终的一致性。
  • 运营复杂性:您需要一个成熟的运营团队来管理大量服务,这些服务正在定期重新部署。
6.单体应用与微服务

6.1单体应用

单体应用是将所有的功能都放在一个应用里面,开发部署简单,横向扩展简单,但是也有自己的缺点就是可能会因为一点小bug会重新部署,牵一发而动全身,而且随着时间的推移,代码越越来越多,维护起来比较复杂。

6.2微服务

  • 一个微服务架构是把每个微服务的功能节点放到一个独立的服务中
  • 可以根据需要任意搭配,对于访问量较大的节点可以多部署,控制***
  • 对于大型分布式应用的部署是一个挑战,如果应用较多,将形成类似于一个神经网络的结构,这对运维要求很高,如果放在单体应用,就配置文件就会花很长的时间。
7.现代java的web应用解决方案
  • 我们用一张图来解释
    跟我学springboot(二)微服务简介
  • Spring Boot旨在尽可能快地启动和运行,只需最少的Spring前端配置。Spring Boot对构建生产就绪应用程序持批评态度。
  • Spring Cloud直接基于Spring Boot的创新企业Java方法,通过实施经过验证的模式简化分布式微服务式架构,为您的微服务带来弹性,可靠性和协调性。
  • Spring Cloud Data Flow将企业连接到任何东西的互联网 - 移动设备,传感器,可穿戴设备,汽车等。Spring Cloud Data Flow为创建可组合数据微服务提供统一服务,这些服务可解决基于流和基于ETL的数据处理模式。
8.总结
  • 单体应用:ALL IN ONE
  • 微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元

推荐阅读
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • 熟练掌握Spring Cloud,终于成为Java工程师的面试门槛 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
author-avatar
我是你的鹏鹏鹏爷
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有