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

什么是微服务?微服务介绍

文章目录

    • 什么是微服务
      • 单体系统
        • 1、项目过于臃肿
        • 2、资源难以隔离
        • 3、扩展瓶颈模块受限
      • 微服务
        • 1、独立部署、灵活扩展
        • 2、资源隔离
        • 1、架构设计复杂
        • 2、 管理复杂


什么是微服务

今天简单了解一下微服务,在看微服务前,先了解一下传统的单机系统。

单体系统

所有的业务子模块都集中在一个系统中,优点是便于管理,但是规模变大的时候,缺点就很明显了。
什么是微服务?微服务介绍

缺点:

1、项目过于臃肿

当产品规模越来越大,各种的大大小小模块都塞在一个项目中,必然会使整个项目变的臃肿,让开发者难以维护。

2、资源难以隔离

系统的各个功能模块都依赖于同样的数据库、内存等资源、一旦某个功能模块对资源处理不当,即可能影响整个系统。

3、扩展瓶颈模块受限

当系统的访问量越来越大的时候,单体系统可以进行水平扩展,部署多台机器。
什么是微服务?微服务介绍
但是这种扩展并不灵活,假如我们的性能瓶颈在支付上,只希望对支付模块进行水平扩展,单体系统是无法做到的。

微服务

微服务,是近年来流行起来的一种架构思想,将单个的应用拆分成一套小型服务,每种应用都是一个独立的进程,通过轻量级机制(通常为http资源api)进行通信。
这些服务围绕业务功能构建,由于进程的独立性,这些小型服务可以使用不同的编程语言、数据存储技术。

微服务的优点

1、独立部署、灵活扩展

单体架构是以整个系统作为单位部署,而微服务则可以作为一个独立的组件单独部署。
举个例子,我们都知道每年双11的爆发访问量,而且基本会集中在凌晨。
那么假如系统瓶颈在于支付模块,需要300台机器,其次是订单只需要200台,用户只需要100台机器,那么我们采用微服务的话就可以进行如下部署。同时docker的流行,也为微服务器提供了有效的容器。
什么是微服务?微服务介绍

2、资源隔离

微服务的一个重要设计原则就是每一个微服务拥有独立的数据源,假如订单服务想读取用户服务的数据库,那么只能通过操作用户服务的接口完成。
同时,docker容器也做好了资源的有效隔离。
什么是微服务?微服务介绍
相比于传统架构,微服务架构更强调的是系统按业务边界做细粒度的拆分和部署。

那么微服务架构有哪些缺点呢:

1、架构设计复杂

微服务需要把原有的系统拆分成多个独立工程,同时需要保证不同服务之间的数据一致性,引入了分布式事务和异步补偿机制,大大增加了设计和开发的难度。

2、 管理复杂

微服务拆分过细可能会出现添加一个小功能需要改动好几个工程的情况,随着服务数量的增加,管理的复杂性也会随之增加。

所以说架构设计没有什么绝对的,主要还是看场景,如果不在大厂的话,一般很难遇到复杂的微服务架构吧。


推荐阅读
  • 云原生应用最佳开发实践之十二原则(12factor)
    目录简介一、基准代码二、依赖三、配置四、后端配置五、构建、发布、运行六、进程七、端口绑定八、并发九、易处理十、开发与线上环境等价十一、日志十二、进程管理当 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 本文介绍了一种图片处理应用,通过固定容器来实现缩略图的功能。该方法可以实现等比例缩略、扩容填充和裁剪等操作。详细的实现步骤和代码示例在正文中给出。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • Sleuth+zipkin链路追踪SpringCloud微服务的解决方案
    在庞大的微服务群中,随着业务扩展,微服务个数增多,系统调用链路复杂化。Sleuth+zipkin是解决SpringCloud微服务定位和追踪的方案。通过TraceId将不同服务调用的日志串联起来,实现请求链路跟踪。通过Feign调用和Request传递TraceId,将整个调用链路的服务日志归组合并,提供定位和追踪的功能。 ... [详细]
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • 本文分享了一位Android开发者多年来对于Android开发所需掌握的技能的笔记,包括架构师基础、高级UI开源框架、Android Framework开发、性能优化、音视频精编源码解析、Flutter学习进阶、微信小程序开发以及百大框架源码解读等方面的知识。文章强调了技术栈和布局的重要性,鼓励开发者做好学习规划和技术布局,以提升自己的竞争力和市场价值。 ... [详细]
  • 容器管理与容器监控influxDB
    容器管理与容器监控-influxDB什么是influxDBinfluxDB安装(1)下载镜像(2)创建容器(3 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 熟练掌握Spring Cloud,终于成为Java工程师的面试门槛 ... [详细]
author-avatar
天呀你呀_778
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有