微服务实战之春云与刀客(一)—— 微服务开篇

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介:

春云即spring cloud ,刀客即docker,这种翻译似乎比较好玩!
这里是春云与刀客不得不说的故事,不会讲太多的入门,更多的是实战和一些规范,以及通过春云和刀客如何简化微服务开发,这些在一些书籍都是没有介绍的。

本篇讲微服务概念和技术选型。

什么是微服务(Microservice)

通常别人问这个问题都不知道如何回答。其实很简单,按字面拆解就是,微服务就是:
微小的服务。
什么是微小?就是单一职责
什么是单一职责?就是一个服务只干一类事情,多的事情我不干。我这个服务只管怎么按头,不管捏脚。
所以暂且给出一个定义:以单一职责划分功能模块组件,通过组件间通信完成复杂业务系统搭建的服务体系

微服务的特点

从服务发展历程来看,微服务分布点较多,互相可以调用。
image
所以微服务有如下特点:
1)根据业务模块划分服务种类。
按业务拆分服务,这是“水平拆分”;在技术层面的“前后分离”,属于“垂直拆分”;横纵一起切,就把单一的应用拆分成网状的小块应用,这是微服务中“微”思想的体现。

2)每个服务可以独立部署并且互相隔离。
独立部署与互相隔离,这点充分体现了“我为人人、人人为我”的设计理念,这是微服务中「服务」思想的体现。

3)通过轻量的 API 调用服务。
关于轻量 API,微服务本身是推荐使用轻量的通讯协议和简单的数据结构,实际上,实施环节通常采用的都是 http+json 的方式。

4)服务需要保证良好的高可用性。

微服务的优点

最大优点就是:人员分工明确,少些扯淡,提高工作效率。
具体理论基础可以看看康威定律和人月神话。
其中有这么个公式:沟通成本 = n(n-1)/2
5个人的项目组,需要沟通的渠道是 5*(5–1)/2 = 10
50个人的项目组,需要沟通的渠道是50*(50–1)/2 = 1,225

微服务不是银弹

说完优点,也该谈谈缺点了。
image

但不要怕,搞技术的就是要跨过这些大山,狠踩这些坑。

微服务框架选型

说完,马上就动手了,采用什么框架呢?
在淘宝的时候,可以使用HSF服务框架,到了市面上,国内用的比较多的是dubbo。dubbo是一个分布式服务框架,底层NIO基于netty框架,可惜在阿里内部一山不能容两虎,dubbo被废了。HSF经过多年逐渐优化,性能会更好,但也肯定跟内部各种中间件绑得太死,没法剥离给外头用;而dubbo产品化比较好,拿到外头好部署,市场很受欢迎,但好几年不更新了。然而,阿里云在集成各种第三方产品工具的时候,又瞄上了dubbo,能带来收益的东西肯定要用,所以在17年快年底的时候GitHub有有新版本的dubbo了。

可惜,这时我已经瞄上了春云了。首选,有哪个用java的互联网不用spring的?而Spring Cloud作为spring家族的后续重量级产品肯定也是越来越好的,肯定是以后技术的一个趋势,有现成的全家桶为何不用?
唯一担忧就是,Spring Cloud是用http方式的,比起RPC方式的性能差。其实这层不必担心,一是spring cloud也是利用连接池的,不是每次请求都重新连接的,而且有人做过实验,系统大都消耗在处理代码逻辑、访问数据库资源这些上面,而数据传输影响很小。二是RESTFUL API已经越来越普遍了。

docker swarm

说到微服务,就不能不提docker,而用docker,我们就要用最好的docker swarm集群。正好我们使用的时候,docker swarm已经比较稳定和强大了。我还是不明白,那docker swarm能干啥?
1)你以前是一个点一个点地run docker,现在swarm可以一次性跑多个点,哪天服务器压力太大,2个点不够了,你执行一个“docker service scale 服务名=5”命令马上就扩大到了5个点。
2)我的docker部署在多台物理机器的,它们直接怎么通信呢,哦,有个docker原厂工程师在github上推出了pipework工具,很牛逼,在此基础上可以实现docker直接通信,然后我去看了下各种网卡和ip地址操作命令,结果一脸的懵逼。然后还有其他各种方案的,弄得也很复杂,反正我也不懂。最后,还有一种成熟的用得比较广泛的方案,就是google的Kubernetes编排技术,我也没亲手试过,只是听说配置也有些复杂。docker swarm就是参考Kubernetes弄的,但因为swarm是原生支持docker的,所以使用上会更简单,所以我选择了swarm。
不过事情没有绝对,10 月 17 日,Docker 在丹麦哥本哈根举行的 DockerCon 大会上宣布,将扩大其 Docker 平台并选择积极拥抱容器编排对手 Kubernetes。这意味着 Docker 客户及开发人员将可以选择同时使用 Kubernetes 与 Docker Swarm 进行容器工作负载的编排。
这些都是后话了,当前选择docker swarm没毛病。

docker的野心很大,docker swarm已经包含了一套自己得微服务理念(例如内含注册中心), 一些地方跟spring cloud会有重复的嫌疑。所以实际实施的过程中就得考虑清楚了。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
5天前
|
存储 监控 供应链
微服务拆分的 “坑”:实战复盘与避坑指南
本文回顾了从2~3人初创团队到百人技术团队的成长历程,重点讨论了从传统JSP到前后端分离+SpringCloud微服务架构的演变。通过实际案例,总结了微服务拆分过程中常见的两个问题:服务拆分边界不清晰和拆分粒度过细,并提出了优化方案,将11个微服务优化为6个,提高了系统的可维护性和扩展性。
22 0
|
1月前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
85 4
|
3月前
|
Dubbo Java 应用服务中间件
微服务框架Dubbo环境部署实战
微服务框架Dubbo环境部署的实战指南,涵盖了Dubbo的概述、服务部署、以及Dubbo web管理页面的部署,旨在指导读者如何搭建和使用Dubbo框架。
278 17
微服务框架Dubbo环境部署实战
|
3月前
|
运维 持续交付 API
深入理解并实践微服务架构:从理论到实战
深入理解并实践微服务架构:从理论到实战
155 3
|
3月前
|
自然语言处理 Java 网络架构
解锁跨平台微服务新纪元:Micronaut与Kotlin联袂打造的多语言兼容服务——代码、教程、实战一次打包奉送!
【9月更文挑战第6天】Micronaut是一款轻量级、高性能的Java框架,适用于微服务开发。它支持Java、Groovy和Kotlin等多种语言,提供灵活的多语言开发环境。本文通过创建一个简单的多语言兼容服务,展示如何使用Micronaut及其注解驱动特性实现REST接口,并引入国际化支持。无论是个人项目还是企业应用,Micronaut都能提供高效、一致的开发体验,成为跨平台开发的利器。通过简单的配置和代码编写,即可实现多语言支持,展现其强大的跨平台优势。
59 3
|
3月前
|
运维 监控 持续交付
深入浅出:微服务架构的设计与实战
微服务,一个在软件开发领域如雷贯耳的名词,它代表着一种现代软件架构的风格。本文将通过浅显易懂的语言,带领读者从零开始了解微服务的概念、设计原则及其在实际项目中的运用。我们将一起探讨如何将一个庞大的单体应用拆分为灵活、独立、可扩展的微服务,并分享一些实践中的经验和技巧。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和深入的理解。
89 3
|
4月前
|
监控 Cloud Native 开发者
云端精英的.NET微服务秘籍:Azure上的创新实战演练
【8月更文挑战第28天】在现代软件开发中,微服务架构通过分解应用程序提升可维护性和扩展性。结合Azure与.NET框架,开发者能轻松打造高效且易管理的云原生微服务。首先,使用Docker容器化.NET应用,并借助Azure Kubernetes Service(AKS)或Azure Container Instances(ACI)部署。为确保高可用性和伸缩性,可利用Azure Traffic Manager负载均衡及Azure Autoscale动态调整实例数。
33 0
|
1月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
129 6
|
1月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
51 1
|
20天前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
140 68
从单体到微服务:如何借助 Spring Cloud 实现架构转型