专栏首页分布式微服务电子商务(一) springboot商城源码之跟我学习SpringCloud-微服务是什么?它的优缺点有哪些?
原创

(一) springboot商城源码之跟我学习SpringCloud-微服务是什么?它的优缺点有哪些?

“微服务”一词来源于 Martin Fowler 的《Microservices》一文。微服务是一种架构风格,即将单体应用划分为小型的服务单元,微服务之间使用 HTTP 的 API 进行资源访问与操作。 在笔者看来,微服务架构的演变更像是一个公司的发展过程,从最开始的小公司,到后来的大集团。大集团可拆分出多个子公司,每个子公司的都有自己独立的业务、员工,各自发展,互不影响,合起来则是威力无穷。

臃肿的系统、重复的代码、超长的启动时间带给开发人员的只有无限的埋怨,丝毫没有那种很舒服的、很流畅的写代码的感觉。他们把大部分时间都花在解决问题和项目启动上面了。

微服务架构的优势

使用微服务架构能够为我们带来如下好处:

1)服务的独立部署

每个服务都是一个独立的项目,可以独立部署,不依赖于其他服务,耦合性低。

2)服务的快速启动

拆分之后服务启动的速度必然要比拆分之前快很多,因为依赖的库少了,代码量也少了。

3)更加适合敏捷开发

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行。服务拆分可以快速发布新版本,修改哪个服务只需要发布对应的服务即可,不用整体重新发布。

4)职责专一,由专门的团队负责专门的服务

业务发展迅速时,研发人员也会越来越多,每个团队可以负责对应的业务线,服务的拆分有利于团队之间的分工。

5)服务可以动态按需扩容

当某个服务的访问量较大时,我们只需要将这个服务扩容即可。

6)代码的复用

每个服务都提供 REST API,所有的基础服务都必须抽出来,很多的底层实现都可以以接口方式提供。

微服务架构的劣势

微服务其实是一把双刃剑,既然有利必然也会有弊。下面我们来谈谈微服务有哪些弊端,以及能采取什么办法避免。

1)分布式部署,调用的复杂性高

单体应用的时候,所有模块之前的调用都是在本地进行的,在微服务中,每个模块都是独立部署的,通过 HTTP 来进行通信,这当中会产生很多问题,比如网络问题、容错问题、调用关系等。

2)独立的数据库,分布式事务的挑战

每个微服务都有自己的数据库,这就是所谓的去中心化的数据管理。这种模式的优点在于不同的服务,可以选择适合自身业务的数据,比如订单服务可以用 MySQL、评论服务可以用 Mongodb、商品搜索服务可以用 Elasticsearch。 缺点就是事务的问题了,目前最理想的解决方案就是柔性事务中的最终一致性,后面的章节会给大家做具体介绍。

3)测试的难度提升

服务和服务之间通过接口来交互,当接口有改变的时候,对所有的调用方都是有影响的,这时自动化测试就显得非常重要了,如果要靠人工一个个接口去测试,那工作量就太大了。这里要强调一点,就是 API 文档的管理尤为重要。

4)运维难度的提升

在采用传统的单体应用时,我们可能只需要关注一个 Tomcat 的集群、一个 MySQL 的集群就可以了,但这在微服务架构下是行不通的。当业务增加时,服务也将越来越多,服务的部署、监控将变得非常复杂,这个时候对于运维的要求就高了。

推荐分布式微服务电子商务源码

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring高级技术梳理

    在学习了Spring框架后 ,我们又学习了SpringMVC , RBAC ,Shiro框架这些中级Spring知识, 如果感兴趣的话请看本人Spring技术分...

    时间静止不是简史
  • 手把手的SpringBoot教程,SpringBoot创建web项目(一)

    剽悍一小兔
  • 15 个优秀开源的 Spring Boot 学习项目,一网打尽!

    Spring Boot 算是目前 Java 领域最火的技术栈了,松哥年初出版的 《Spring Boot + Vue 全栈开发实战》迄今为止已经加印了 8 次,...

    江南一点雨
  • (三) springboot商城源码之跟我学习SpringCloud-和Dubbo的区别及各自的优缺点

    我们先从 Nginx 说起,了解为什么需要微服务。最初的服务化解决方案是给相同服务提供一个统一的域名,然后服务调用者向这个域发送 HTTP 请求,由 Nginx...

    SpringCloud商城
  • 关于微服务的分享

    微服务应该可以说是这几年比较流行火爆的名词了,很多互联网公司也已经开始采用微服务架构体系,即使比较传统的软件公司也慢慢的开始重新架构现有的应用程序。

    每天学Java
  • 人类高质量 Java 学习路线【一条龙版】

    大家好,我是鱼皮。现在网上的编程资料实在太多了,而且人人肯定都说自己的最好,那就导致大家又不知道怎么选了。大部分的博主推荐资源,也就是把播放量高的视频说一遍,水...

    程序员鱼皮
  • SpringCloud初步介绍

      就目前而言,对于微服务业界并没有一个统一的、标准的定义。   但通常而言,微服务架构是一种架构模式或者说是一种架构风格,提倡将单一应用程序划分成一组小的服务...

    Java架构师历程
  • 成为一名Java高级架构师你应该要学习的技术

    Java天坑
  • SpringCloud和微服务

    马丁福勒微服务论文:https://martinfowler.com/articles/microservices.html

    lyb-geek
  • 微服务总结

    简单举例:看军事新闻的同学应该都知道,一艘航空母舰作战能力虽然很强,但是弱点太明显,就是防御能力太差,单艘的航空母舰很少单独行动,通常航空母舰战斗群才是主要军事...

    后端码匠
  • 整理了 40 多套 Java 完整实战项目,各个精品!

    很多小伙伴都想找能跟着学习的完整实战项目。鱼皮分类整理了亿点点,都是开源免费的,适合系统学习,而且都是可以写到简历上的企业级完整项目!

    程序员鱼皮
  • 2021升级版微服务教程1—为什么会有微服务?什么是SpringCloud?

    **2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」**

    鹿老师的Java笔记
  • 「 从0到1学习微服务SpringCloud 」01 一起来学呀!

    有想学微服务的小伙伴没?一起来从0开始学习微服务SpringCloud,我会把学习成果总结下来,供大家参考学习,有兴趣可以一起来学!如有错误,望指正!

    KEN DO EVERTHING
  • 13个优秀的 Spring Boot 学习项目

    之前,笔者总结了 Spring Cloud学习资源一网打尽!Awesome Spring Cloud v1.0 ,这一篇整理了Spring Boot 世界的优秀...

    用户1516716
  • 限量!Alibaba首发“Java成长笔记”,差距不止一点点

    关于技术人如何成长的问题,一直以来都备受关注,因为程序员职业发展很快,即使是相同起点的人,经过几年的工作或学习,会迅速拉开极大的差距,所以技术人保持学习,提升自...

    烂猪皮
  • 2021升级版微服务教程—为什么会有微服务?什么是SpringCloud?

    2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」

    鹿老师的Java笔记
  • 又到了跳槽季,你们都准备好了吗?我来告诉Java程序员们如何快速全面的复习

    年过完了,大多数同仁们应该已返回并进入了工作状态,估计这个时候,有很多小伙伴也在开始准备年后跳槽的事情了,对于一些做传统项目的同仁,不知道如何复习迎接面试是肯定...

    攻城狮的那点事
  • Spring Cloud面试题(2020最新版)

    Java面试总结汇总,整理了包括Java基础知识,集合容器,并发编程,JVM,常用开源框架Spring,MyBatis,数据库,中间件等,包含了作为一个Java...

    Java架构师必看
  • 五分钟学Java:一篇文章带你搞懂spring全家桶套餐

    上期我们讲了spring和springmvc两个框架的基础知识和学习路线,而这期内容,我们将围绕着spring全家桶展开来讨论。

    黄小斜学Java

扫码关注云+社区

领取腾讯云代金券