微服务也是一种服务化,不过其和SOA架构的服务化概念也是有区别的,可以从以下几个关键字来理解:
松耦合:每个微服务内部都可以使用DDD(领域驱动设计)的思想进行设计领域模型,服务间尽量减少同步的调用,多使用消息的方式让服务间的领域事件来进行解耦。
轻量级协议:Dubbo是SOA的开源标准实现之一,类似于gRPC,Thrift等。微服务更倾向于使用Restful风格的API。轻量级协议可以很好地支持跨语言开发服务。某些微服务可能是用Java语言实现的,有些是Go语言的,有些是C的,但是所有的所有语言都可以支持Http协议通信,并且所有开发人员都可以理解Restful风格API的含义。
高度自治和持续集成:从低层次的角度来看,SOA更倾向于基于虚拟机或服务器的部署。每个应用程序都部署在不同的计算机上。通常,持续集成工具是由运维团队编写的。根据共同协议编写脚本并提供开发和部署页面(例如Dubbo管理页面)。
微服务可以很好得和容器技术结合,容器技术比微服务出现得晚,但是容器技术的出现让微服务的实施更加简便,目前Docker已经成为很多微服务实践的基础容器。
因为容器的特色,所以一台机器上可以部署几十个、几百个不同的微服务。如果某个微服务流量压力比其他微服务大,可以在不增加机器的情况下,在一台机器上多分配一些该微服务的容器实例。
同时,由于Docker容器编排社区变得越来越成熟,像Mesos,Kubernetes和Docker这样的Swarm正式提供Swarm作为持续集成部署的技术选择。
实际上,从体系结构的演变的角度来看,总体发展是朝着越来越轻巧和灵活的应用程序发展,甚至是在过去两年中已经成熟的无服务器(无服务)体系结构。
从单体服务到分层的服务,再到面向服务、再到微服务甚至无服务,对于架构的挑战是越来越大。
推荐阅读:【鲁班学院】微服务架构设计分类
如果你想了解更多关于java架构师的专业知识,可以加入JAVA架构师交流群:1160405674,里面都是同行,有资源分享包括但不限于(分布式架构、高可扩展、高性能、高并 发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、Mycat、Netty、Kafka、Mysql 、Zookeeper、Tomcat、Docker、Dubbo、Nginx)。欢迎一到五年的工程师加入,合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!