微服务架构的设计和实践-培训感悟

这两天(4月8号,9号)我有幸参加了极客邦的培训课程-微服务架构的设计和实践,能够面对面倾听58架构师-孙玄的亲身授课,个人也是感到非常的荣幸。两天的时间,来回于广州和深圳,虽然不能说自己的技术有了一个质的提升,但至少也是一次很好的交流体现,这一趟不白走!

身为一个技术小白(虽然个人也有四年的开发经验,但大多的技术只是知其然而不知其所以然,而且接触面太狭隘),此次学习最明显的感受是,如果你只会写软件代码,了解与某种语言相关的语法,框架以及架构包括技术,那你肯定会"死的很惨"。作为软件行业从业者,编码仅仅是整个产品从出生到最终的上线交付中最不举足轻重的一个环节,脱离了任何一环它都没有存在的价值。有句老话说得好,不想当将军的厨子不是好裁缝。每个码农心中或多或少都有一个架构师梦,而最终站在架构师的舞台翩翩起舞的往往只有极少数人,大多数人都可能死在架构的前夕。要想成为架构从业者,仅仅关心自己的一亩三分地,而不是拓展其他板块的蓝图,那你的地里永远都不会生产出金子。

话不多说,进入主题。既然是微服务的架构,我就开始谈谈个人的一些看法与理解。

架构是一个十分吸引人的概念,孙老师有句至理名言:脱离业务场景,空谈架构绝对是耍流氓。微服务架构亦如此,如不能最终满足业务需求,服务于业务,那它就没有存在的意义。与微服务架构相对立的另外一种架构师单体架构(Monoliths)。所谓单体架构,个人觉得可以理解为没有架构(此处的架构不包括软件设计中的一下架构,如J2EE,MVC等),所有的服务功能都是运行在一个进程里,如一个传统的war包部署在web容器,这个时候他就是单体的。微服务架构的核心概念则体现在这个微字,究竟多微才算微,粒度应该如何拆分呢?

首先,微服务并不是银弹,也就是说他不是万能的,并不适用于所有的业务场景。比如,针对简单的系统,业务模块只有三五个,无其他的访问或者数据压力,这个时候杀鸡就没必要用宰牛刀了。微服务对于机器的依赖相对于传统的单体服务架构来说更高一点,毕竟要实现微服务,至少需要引入第三方依赖(如消息队列)。此时,开发成本或硬件成本或多或少都会增加。另外微服务的分布式系统管理也会带来更高的运维成本和测试成本。

对于大型的互联网公司而言,他的业务复杂度是不可估量的。为了解决开发效率低,扩展性差,不高可用行的问题,业务模块之间的分离是必然的选择。不过光是业务模块的分割显然还是不能满足业务的需求,如用户模块,用户的注册,用户的空间等等如果还是在一个进程中实现,仍然会存在服务器压力很大的问题。个人认为,在条件允许且有必要的情况下,粒度最好能够小到不能够再分离的地步。最终拆分的服务,即最终的微服务,都会注册到注册中心。

具体的服务架构组成不过多赘述,要了解微服务的整体架构及应用场景包括如何设计,需要了解的技术面很多。从网关层的设计 到聚合层(即业务逻辑层)的设计,原子层再到数据层(DB或cache)的设计都是门很大的学问。如何实现高可用性,最终一致性也是微服务的最终的实现目标。

大致的技术细节不一一细述了,上面提到的也仅仅是我的个人观点,此文章的重点也不是技术,。两天的培训,如果基础不能扎实,如网络硬件或者常用的软件理解的不够深入的话其实是一件很痛苦的事,这也是我的切身感受,因为等待我学习的东西实在是太多了。

每段风光的背后总会隐藏着不为人知的坚信与痛苦,不逼自己一回,那你永远只会是井底之蛙,永远无法体会风光的感觉。外面的世界确实很精彩,外面的牛人也确实很多。所谓适者生存,不适者淘汰,加快自己的步伐,永远不要驻足而立!

时间: 2024-08-02 16:02:26

微服务架构的设计和实践-培训感悟的相关文章

微服务架构的设计原则

微服务架构的设计原则如下:¶ 高内聚.低耦合. 无缝的 API 集成. 为每一项服务分配唯一的资源标识. 实时流量管理. 最小化数据表,以优化加载. 通过内/外部 API,执行持续监控. 为每个微服务隔离数据的存储.这对于限制数据的访问和避免“服务的耦合”是非常有用的. 例如:基于用户的分类数据,我们可以实施命令查询的责任分离(Command Query Responsibility Segregation,CQRS). 去中心化.设计微服务架构的首要原则是:将单体结构分解成独立的多个实体,而这

基于容器与微服务架构的Web应用实践eShopOnContainers

微软官方提供了一个基于Docker和微服务的示例应用eShopOnContainers:它使用了面向服务的架构并且从服务端到客户端都是跨平台的:该架构使用通过http作为客户端与服务端直接的通信协议.多个微服务每个都有自己的db:另外主要使用的技术Docker.事件总线.DDD/CQRS. 开源项目地址: https://github.com/dotnet-architecture/eShopOnContainers 每个微服务都提供了一种实施方案: Identity微服务:使用了Identit

千万级调用量微服务架构实践

微服务架构在大型电商中的运用电商是促销拉动式的场景,也是价格战驱动的场景.618和双11都是典型的促销活动.其实都是在抢用户.扩市场占有率.在这样的场景之下,对秒杀.抢购是很热衷的玩法. 促销式的拉动对系统的挑战是什么呢? 可以从上图里看到:对高可用性的要求是非常高的,需要99.99%的高可用性.快速迭代对对系统容性的要求很高,从几万单变成几十万单.百万单,架构上不能影响快速迭代,所以有空中加油或者是高速公路换轮胎的说法. 另外,为了应对瞬间的海量访问(尤其是秒杀场景),系统需要高可伸缩(快速扩

微服务架构(Microservice Architecture)

之前一段时间,有听部门架构说起接下来公司要使用微服务架构来研发系统,当时没怎么在意,因为是第一次听说微服务这个名词(果然无知者无畏啊):正好赶上五一假, 我自告奋勇的,接了编写微服务架构培训文档这个任务(也许因为我是文科生,文笔稍微好点).五一假期三天,基本都是在看资料,梳理思路以及编写接下来的培训文档中度过. 下面,就说说我这几天的一些收获吧:先说说资料来源吧:有架构给我的一些资料,以及自己百度和论坛.社区找来的一些资料,权当做一个总结式的简介... 目录如下: 一.微服务架构介绍 二.出现和

NET实现的DDD、CQRS与微服务架构

WeText项目:一个基于.NET实现的DDD.CQRS与微服务架构的演示案例 最近出于工作需要,了解了一下微服务架构(Microservice Architecture,MSA).我经过两周业余时间的努力,凭着自己对微服务架构的理解,从无到有,基于.NET打造了一个演示微服务架构的应用程序案例,并结合领域驱动设计(DDD)以及命令查询职责分离(CQRS)体系结构模式,对事件驱动的微服务系统架构进行了一些实战性的探索.现将自己的思考和收获整理成文,分享给大家. 微服务架构 在介绍源代码之前,我还

[转]微服务架构

本文转自:https://www.cnblogs.com/imyalost/p/6792724.html 资料来源:有架构给我的一些资料,以及自己百度和论坛.社区找来的一些资料,权当做一个总结式的简介... 目录如下: 一.微服务架构介绍 二.出现和发展 三.传统开发模式和微服务的区别 四.微服务的具体特征 五.SOA和微服务的区别 六.如何具体实践微服务 七.常见的微服务设计模式和应用 八.微服务的优点和缺点 九.思考:意识的转变 十.参考资料和推荐阅读 一.微服务架构介绍 微服务架构(Mic

微服务架构见解

就我个人而言,我觉得微服务架构应该满足以下几个特征: 整个系统被分为多个业务功能相对独立的一体化架构(Monolithic Architecture,或称单一化架构)的应用程序(也就是所谓的“微服务”),每个微服务通常遵循标准的分层架构风格或者基于事件驱动的架构风格,能够对自己相关的领域逻辑进行处理,使用本地数据库进行数据存储,并向上层提供相对独立的API接口或者用户界面.每个微服务还可以使用诸如缓存.日志等基础结构层设施,但如果是与其它的微服务公用这些设施,则该基础结构层设施需要满足下面的第三

Net分布式系统之五:微服务架构

因工作较忙,抽时间将框架遇到的问题和框架升级设计进行记录. 一.背景&问题 之前框架是一个基于SOA思想设计的分布式框架.各应用通过服务方式提供使用,服务之间通信是RPC方式调用,具体实现基于.NET的WCF通信平台.框架存在如下2个问题: 1.高并发处理能力不足.一当高并发请求,可能出现多个服务待定处理,导致整个系统出现瓶颈. 2.随着移动端广泛应用,服务不能灵活支持APP应用. 3.系统持续集成部署过于繁琐,遇到问题不好定位. 基于以上存在问题升级框架,结合当前主流的架构思想,将系统进行服务

.Net微服务架构

一.背景&问题 之前框架是一个基于SOA思想设计的分布式框架.各应用通过服务方式提供使用,服务之间通信是RPC方式调用,具体实现基于.NET的WCF通信平台.框架存在如下2个问题: 1.高并发处理能力不足.一当高并发请求,可能出现多个服务待定处理,导致整个系统出现瓶颈. 2.随着移动端广泛应用,服务不能灵活支持APP应用. 3.系统持续集成部署过于繁琐,遇到问题不好定位. 基于以上存在问题升级框架,结合当前主流的架构思想,将系统进行服务化思维,就是"微服务架构". 二.微服务架