微服务架构是什么

架构师在软件行业一直有很高的位置,并且在开会中的架构师都带有主角光环。 架构师是可以说是软件的设计者,运用我们学会就会忘记的23种设计模式、企业架构模式、面向对象编程,来设计系统基础架构。基础架构开发完成后,程序员就可以愉快的在系统的基础框架里舔砖加瓦,最终完成项目的开发。

微服务和架构师有什么关系?因为微服务也是一种架构,所以还需要架构师来设计。先不说架构师了,架构师在微服务作用放到最后说。先说说传统的架构。

传统的三层架构

传统的web系统一般是采用三层架构来开发系统的,三层架构既视图层、业务层、数据层的架构。视图层负责与用户交互,业务层负责处理业务逻辑,数据层负责数据的处理。一般系统上线发布,都是打成一个包,部署在中间件中,业务代码全在一个进程中。对于需要高可用的系统,架构会设计成集群,web应用会运行在多个主机中。

这种架构的系统看起来没什么问题,不重要的系统,单例,一个进程。重要的系统,集群,多实例。其实这种架构问题很多,不然也不会有现在的微服务模式。 传统架构的缺点:

1、难以维护: 代码极度臃肿,有些小系统的代码竟然达到100m甚至1G,里面不知有多少无用的包和个版本积累的无用代码,代码难以维护。 2、稳定性差: 稳定性差主要有几个原因: 1、代码原因:代码越多,bug就回去越多。因为代码都是运作在一个进程中,某块代码出现问题,就会导致系统运行缓慢、不可用,甚至进程崩溃问题。 2、中间件原因:中间件也有bug,有时也会罢工,它一罢工,系统就整个崩溃了。 3、依赖系统问题:依赖系统出问题了,也可能会导致本系统最终不可用。 4、其他原因:数据库、操作系统、硬件存储等。 3、难以扩展: 系统不好集群,集群了,负载不一定好用。无法动态扩展。 4、发布成本高: 因为是集成到一个包,所以修改的代码难以确定修改的范围和影响的范围,不知道影响范围,有时需要全面测试,直接导致测试周期拉长,上线后修改的代码还可能引起其他问题。

微服务是什么?

微服务,不同的人理解不同。我的理解,微服务在软件中,就是一种软件架构模式。是系统的调用架构模式,是将系统分割成单独模块,提供api工其他模块调用,可以单独部署,单独运行在服务器之中,可以说是天生的分布式系统。

微服务解决了什么问题?

1、稳定性提升:业务按模块划分,实现了进程级别、容器级别甚至操作系统级别的隔离,互不影响。运维的核心可以从解决问题转变成主动发现问题。 2、易部署:轻量级部署,影响范围可控,系统其他模块可以正常运行。 3、易交付:因为代码较少,测试较快,说要交付周期缩短了。 4、易扩展:模块代码是轻量级的,容易快速扩展。

微服务的通信是什么? 模块相互调用就需要通信,通信首先方式是rpc,以保证其性能。对接过soa系统开发人员可能比较清楚,soa用的是http协议,调用都是访问网页一样,性能较差。可以说,没有好的rpc框架,就不会有好的微服务。现在的rpc框架有Netty,dubbo,HSF,ZooKeeper。

微服务是不是糖衣炮弹,有没有陷阱? 微服务是不是糖衣炮弹,搞不好真是,为了避免炸伤自己,有些陷阱还是要注意。

1、减少多样性:因为为微服务是可以使用不用语言实现的,会增加项目的后期维护成本,最好一个项目都开发语言不要超过两种,不要java、c、c++、c#、python、delphi、node.js、go等各类语言都来了。 2、要有熔断机制:微服务因为是模块化,模块之间调用会非常频繁,如果没有熔断机制,一旦一个模块出现问题,可能会导致调用链出现问题,最后导致系统完全崩溃。

3、一定要有服务监控:一定要有服务监控,最好可以监控每个服务的调用链,及时发现问题。

要不要用微服务? 微服务是一种软件组织、协作的模式。对于一般的管理系统,不建议采用微服务模式,但是可以将容易出问题或者需要与其他系统交互的模块,进行拆分,做成微服务,这样可以进一步提升系统的稳定性。对于大型系统是否采用,这个就需要软件的架构师去评估了。

来源:http://ypj5.com/p/3332386066159616?spm=5176.100239.blogcont73731.15.yITCOK

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JAVA高级架构

盘点电商大战背后的技术力量支撑

『目的』满足贯穿从商品展示、搜索、购买、支付等整个流程,电商对于精细化、精准化促销运营的需求,使多渠道(终端)、多区域化营销成为简单易行的配置操作,提升运营能力...

1813
来自专栏程序员宝库

看似简单的 Windows 记事本,其实维护起来并不简单

相信大家对 Windows 系统自带的记事本程序都不会陌生,在座的各位或许还有用它来写代码的经历。看上去它的功能非常简单,但你能否想到即便功能如此简单的程序,也...

1405
来自专栏织云平台团队的专栏

腾讯SNG全链路日志监控平台之构建挑战

全链路日志监控在现在盛行的微服务和分布式环境下,能有效地提高问题定位分析效率,成为开发和运维利器。当前已有开源解决方案和成熟的厂商提供。

1.2K0
来自专栏携程技术中心

干货 | 如何利用Xcode实现线上代码覆盖率的检查

1932
来自专栏Linyb极客之路

优化网站性能必备的6种架构方案,你知道吗?

一个成熟的大型网站(如淘宝、天猫、腾讯等)的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的,它是随着用户量的增加,业务功能...

1073
来自专栏微服务

电商前端交易型系统设计原则

个人认为设计系统要因场景因时间而异,一个系统不是一下子就设计的非常完美,在有限的资源情况下一定是先解决当下最核心的问题,并预测/发现未来可能出现的问题,一步步解...

981
来自专栏腾讯云技术沙龙

杨原:腾讯云Kafka自动化运营实践

下面我们有请腾讯云基础架构部高级工程师杨原给我们带来主题分享——腾讯云Kafka自动化运营实践。

1.1K13
来自专栏CSDN技术头条

中华万年历头条数据聚合优化之路

业务介绍 中华万年历的头条数据是根据推荐算法聚合而成的数据,包括ALS算法数据、用户画像数据、时效数据、非时效数据、定投数据、惊喜数据、频道数据、热榜数据、用户...

2498
来自专栏顶级程序员

看似简单的 Windows 记事本,其实维护起来并不简单

相信大家对 Windows 系统自带的记事本程序都不会陌生,在座的各位或许还有用它来写代码的经历。看上去它的功能非常简单,但你能否想到即便功能如此简单的程序,也...

722
来自专栏FreeBuf

利用漏洞更改Google搜索排名

只需12美元注册购买一个域名,我就能在Google搜索结果中实现与亚马逊、沃尔玛等高价值关键词相同的广告排名。按照Google Adwords(谷歌付费广告业务...

1233

扫码关注云+社区

领取腾讯云代金券