微服务在互联网公司演进过程
一、微服务由来
微服务不是被发明出来的,而是从现实世界中总结出来的一种趋势或模式。
-SamNewman
多端技术促使了服务架构升级为微服务架构,而互联网加速了微服务架构演进。
微服务在互联网公司演进过程
微服务架构更关注广度(大方向)并兼顾重要细节,满足现有需求同时能应对将来的变化。
微服务在互联网公司演进过程
二、微服务的发展
2.1、面向服务架构SOA与微服务的关系是什么?
SOA在发展过程中,由于厂商添加了太多元素(很多是出于销售原因),把面向服务的架构SOA搞的声名狼藉,同时SOA本身模式上也存在一些问题。微服务社区的很多技术人员都具有大型机构整合服务经验,他们深知仅仅SOA已经不能完全涵盖服务经验,再加上互联网的发展,让这些整合服务经验传递出来,于是微服务倡导者拒绝继续使用SOA标签。但还是有不少人认为微服务是从SOA中发展而来的,或许面向服务是对的。
2.2、微服务架构是否需要不断演进?
设计合理的服务是要对系统有足够的认识,从模块到服务边界以及暴露的内容都需要很高的认知,并且还需要很多设计理论支撑。微服务架构提倡持续改变和演进系统,变化无法避免,拥抱变化才是王道。
-工具支持
-制定原则
-实践
三、微服务模式
3.1、微服务架构的主要好处有哪些?
技术异构性
弹性
扩展
简化部署
与组织结构相匹配
可组合性
对可替代性的优化
3.2、微服务怎么衡量好坏?
(1)、松耦合。 修改一个服务不需要修改另一个服务,最小知识原则,基于接口设计,API技术无关性。
(2)、高内聚。把因相同原因而变化的东西聚合到一起,而把因不同原因而变化的东西分离
开来。
3.3、微服务粒度如何衡量?
不能以代码行多少来衡量服务粒度。比如像Kotlin语言能使用很少的代码完成其他语言相同的功能,还比如一个服务的代码可能有多个依赖项,而每个依赖项又会有很多代码,再比如有的领域对象本身很复杂,服务的本质不应该在过渡强调服务的大小服务粒度与团队结构相匹配,如果代码库过大,一个团队无法正常维护,即可仅一步查分。
3.4、服务与应用的关系?
服务和应用可以一对一,也可以一组服务集一个应用,服务集通常是一个独
立的业务模块。但如何选择要看团队组织,只要与团队能力匹配即可。
3.5、微服务如何建模
建模是一种能力,是需要有专业知识加业务理解。参考《微服务设计》、《领域驱动设计》等书
四、微服务架构在五阿哥的演进
4.1、工具化-架构/运维/开发
完善服务治理
依赖关系管理
接口设计平台
服务编排
更完善的监控
安全控制
4.2、制定微服务原则-架构
让目标和大方向一致,比如:一致的接口和数据流
4.3、实践,更细粒度的约束-开发
关注服务边界和边界内的事情,把服务做到合适。实践出细粒度规则,做好服务的粒度及服务暴露的粒度需要比较高设计能力。
本文出处:http://geek.csdn.net/news/detail/238890

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
运维架构服务监控Open-Falcon
运维架构服务监控Open-Falcon(http://www.roncoo.com/course/view/ae1dbb70496349d3a8899b6c68f7d10b) 一、 介绍 监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题。监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择。当公司刚刚起步,业务规模较小,运维团队也刚刚建立的初期,选择一款开源的监控系统,是一个省时省力,效率最高的方案。之后,随着业务规模的持续快速增长,监控的对象也越来越多,越来越复杂,监控系统的使用对象也从最初少数的几个SRE,扩大为更多的DEVS,SRE。这时候,监控系统的容量和用户的“使用效率”成了最为突出的问题。 监控系统业界有很多杰出的开源监控系统。我们在早期,一直在用zabbix,不过随着业务的快速发展,以及互联网公司特有的一些需求,现有的开源的监控系统在性能、扩展性、和用户的使用效率方面,已经无法支撑了。 因此,我们在过去的一年里,从互联网公司的一些需求出发,从各位SRE、SA、DEVS的使用经验和反馈出发,结合业界...
- 下一篇
在生产环境使用Kafka构建和部署大规模机器学习
使用Apache Kafka在生产环境构建大规模机器学习 文章转自:http://www.infoq.com/cn/articles/build-deploy-scalable-machine-learning-production-kafka 智能实时应用为所有行业带来了革命性变化。机器学习及其分支深度学习正蓬勃发展,因为机器学习让计算机能够在无人指引的情况下挖掘深藏的洞见。这种能力正是多种领域所需要的,如非结构化数据分析、图像识别、语音识别和智能决策,这完全不同于传统的编程方式(如Java、.NET或Python)。 机器学习并非新生事物,大数据集的出现和处理能力的进步让每一个企业都具备了构建分析模型的能力。各行各业都在将分析模型应用在企业应用和微服务上,用以增长利润、降低成本,或者改善用户体验。 这篇文章将介绍机器学习在任务关键型实时系统中的应用,将Apache Kafka作为中心化的、可伸缩的任务关键型系统,同时还将介绍使用Kafka Streams API来构建智能流式应用。 可伸缩的任务关键型实时系统 互联网、智能手机和持续在线思维的出现改变了人们的行为方式。其中就包括人们...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16