什么是微服务项目,什么是微服务注册大发现
目录
背景
1、为什么需要微服务架构
2、什么是微服务
3、微服务的优势
4、微服务和SOA的关系
5、错误示范
背景
最近几年,越来越多的开发人员使用“微服务”一词来阐述他们的系统或应用架构,当然或许这只是他们在吹嘘自己在技术潮流中并未落伍。我认为,IT科技行业的人士至少要了解微服务的基础知识,因为它代表着未来的发展方向。即使对我的话半信半疑,还有行业内很多大神为我背书。只是,话说回来,到底什么是微服务呢?
1、为什么需要微服务架构“微服务”架构是近期软件应用领域非常热门的概念。让我们先来看看传统IT架构面临的一些问题:
应用开发系统,如CRM、ERP等大型应用,随着新需求的不断增加,企业更新和修复大型整体式应用变得越来越困难;随着移动互联网的发展,企业被迫将其应用迁移至现代化UI界面架构以便能兼容移动设备,这要求企业能实现应用功能的快速上线;许多企业在SOA投资中得到的回报有限,SOA可以通过标准化服务接口实现能力的重用,但对于快速变化的需求,受到整体式应用的限制,有时候显得力不从心;随着应用云化的日益普及,生于云端的应用具有与传统IT不同的技术基因和开发运维模式。此外,从技术方面看,云计算及互联网公司大量开源轻量级技术不停涌现并日渐成熟:互联网/内联网/网络更加成熟;轻量级运行时技术的出现(node.js, WAS Liberty等);新的方法与工具(Agile, DevOps, TDD, CI, XP, Puppet, Chef…);新的轻量级协议(RESTful API接口, 轻量级消息机制);简化的基础设施:操作系统虚拟化(hypervisors), 容器化(e.g. Docker), 基础设施即服务 (IaaS), 工作负载虚拟化(Kubernetes,Spark…)等;服务平台化(PaaS): 云服务平台上具有自动缩放、工作负载管理、SLA 管理、消息机制、缓存、构建管理等各种按需使用的服务;新的可替代数据持久化模型:如NoSQL, MapReduce, BASE, CQRS等;标准化代码管理:如Github等。这一切都催生了新的架构设计风格 – 微服务架构的出现。
2、什么是微服务微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,解决单体系统的不足,同时也满足越来越复杂的业务需求。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。摘自:Microservices
微服务就是将一个单体架构的应用按业务划分为一个个的独立运行的程序即服务,它们之间通过 HTTP 协议进行通信(也可以采用消息队列来通信,如 RoocketMQ,Kafaka 等),可以采用不同的编程语言,使用不同的存储技术,自动化部署(如 Jenkins)减少人为控制,降低出错概率。服务数量越多,管理起来越复杂,因此采用集中化管理。例如 Eureka,Zookeeper 等都是比较常见的服务集中化管理框架。
3、微服务的优势 将复杂的业务拆分成多个小的业务,每个业务拆分成一个服务,将复杂的问题简单化。利于分工,降低新人的学习成本。微服务系统是分布式系统,业务与业务之间完全解耦,随着业务的增加可以根据业务再拆分,具有极强的横向扩展能力。面对搞并发的场景可以将服务集群化部署,加强系统负载能力。服务间采用 HTTP 协议通信,服务与服务之间完全独立。每个服务可以根据业务场景选取合适的编程语言和数据库。微服务每个服务都是独立部署的,每个服务的修改和部署对其他服务没有影响。随着移动互联网的发展,企业被迫将其应用迁移至现代化 UI 界面架构以便能兼容移动设备,这要求企业能实现应用功能的快速上线。许多企业在SOA投资中得到的回报有限,SOA 可以通过标准化服务接口实现能力的重用,但对于快速变化的需求,受到整体式应用的限制,有时候显得力不从心。
4、微服务和SOA的关系SOA即面向服务的架构,SOA是根据企业服务总线(ESB)模式来整合集成大量单一庞大的系统,微服务可以说是SOA的一种实现,将复杂的业务组件化。但它比ESB实现的SOA更加的轻便敏捷和简单。
5、错误示范 禁忌1、你进来公司的时候已经选好构架了。
2、老板让你用。
3、大家都在用。
如果你答出了以上三点任意一点,那么恭喜你,你就掉坑里了。