开发者社区> 猫饭先生> 正文

一个更好的可视化微服务架构的方式

简介: 本文讲的是一个更好的可视化微服务架构的方式【编者的话】如何快速地可视化一个微服务架构,本文作者有一个很酷的办法,赶紧来看看吧!
+关注继续查看
本文讲的是一个更好的可视化微服务架构的方式【编者的话】如何快速地可视化一个微服务架构,本文作者有一个很酷的办法,赶紧来看看吧!

【3 天烧脑式容器存储网络训练营 | 深圳站】本次培训以容器存储和网络为主题,包括:Docker Plugin、Docker storage driver、Docker Volume Pulgin、Kubernetes Storage机制、容器网络实现原理和模型、Docker网络实现、网络插件、Calico、Contiv Netplugin、开源企业级镜像仓库Harbor原理及实现等。

我一直在用draw.io做一些和UML流程图,图表或者曲线图相关的事情。它在丰富的功能和用户的手工控制方面做出了合理的权衡。

但是,接下来我会告诉你如何自动化一些无聊的鼠标点击;)

避免从一开始就犯错

figure_1_visual_arch.jpeg

Daniel Woods的 “Microservices: The Right Way” 演讲里其中一张幻灯片

如果它不是这样的话事情也不会变得这么有趣。事实上,这里最好能有一张更清晰地展现组件之间关系和职责的图片。不然的话最终结果就是像上面看到的这样 ;)

诀窍便是在做的时候不断审视它哪个地方不对,这样一来便不太可能做的这么糟了。

在做图的时候 —— 你也在同时给自己一个整体的感觉,它们将会怎么交互,问题域是什么,上下文,边界,等等。

"光纸上谈兵是没用的,长期的战略规划才是无价的。"
― Winston Churchill

行动起来!

假设我们有一个简单的社交应用。当然,这是一个很简单的设定,但是你可以注意到这里面存在许多的关联关系。
figure_2_social_app.png

客户端:前端应用和浏览器扩展。
API网管:认证API和主服务API。
微服务:照片,图表还有好友这些微服务。

我花了相当长的时间来排列方块,拖放箭头还有调整。而这只是因为我想要以一个更可读的方式来对齐它们。

你可以想象排列50个这样的方块有多无聊吗?100个呢?然后我如果再删除一个?我敢打赌你会放弃这件事情,然后选择回来继续码代码。

和 Graphviz 结缘

我从Terraform获得了灵感 —— 一个创建和维护生产环境基础设施的工具。它支持配置任意和基础设施相关的服务,这里面包含了从AWS EC2的实例到来自于50个云厂商提供的集群和负载均衡。它还提供了一个有趣的terraform graph命令,可以根据现有配置生成一个可视化的图表展现。
figure_3_graphviz.png

‘terraform graph’ 命令的示例输出

因此我决定采用相同的技巧,但是针对的是一个更高层面的微服务架构。以下是一个用DOT编写的Graphviz配置。
digraph architecture {
rankdir=LR;

subgraph client_side_apps {
  front_end -> {auth_api, my_app_api};
  extension -> {auth_api, my_app_api};

  {rank=same; front_end, extension, auth_api};
}

subgraph api_gateways {
  my_app_api -> {photos_ms, chats_ms, friends_ms};
}

subgraph microservices {
  photos_ms -> {database};
  chats_ms -> {database, cache};
  friends_ms -> {database, facebook_api};
}
} 

你只需要将它渲染成一个.png文件即可。你可以使用在线编辑器或者直接在机器上渲染。为了不弄脏系统,我为此创建了一个Docker镜像:
cat file.dot | docker container run --rm -i vladgolubev/dot2png > file.png

通过执行上述这行简单代码,两分钟内你便可以得到这样一个令人惊叹的输出结果!
figure_4_dotfile.png

提示:你可以将代码复制粘贴到一个在线的编辑器: http://dreampuf.github.io/GraphvizOnline/

在微服务之间添加一个新的依赖的想法实现起来从未如此简单。我需要做的只是添加一行新的代码,随即 Graphviz 会很好地将它们组织在一起。

作为最后的点睛之笔,我喜欢添加一些颜色。因此你立马可以看到下面的效果:
  • 绿色 — node.js
  • 红色 — api gateway
  • 黄色 — front-end
  • 蓝色 — storage,database
  • 灰色 — 3rd-party API

这并不是最优的颜色布局,但是你已经知道可以这样做了 ;)
相信我,有大量图表的情况也很容易做到这一点。
figure_5_arch_graph.png

全部代码放在: https://gist.github.com/vladgo ... 70882

小结

我在给一张微服务架构图频繁添加修改时遇到了问题。每一次变更都要用箭头手工修补。如今我可以放心实验,看看新的微服务是如何适配我的系统。当然,你还可以做的更好,将它放到版本控制系统里,这样一来便可以得到架构图的修改变更历史!

但是这取决于你。选择一款最合适的工具吧。Google搜索微服务可视化的方案,你将会被一大票商业解决方案轰炸的。

可视化的设计会使得检查和调试变得更容易。
― Unix的基本哲学

原文链接:A Better Way of Visualizing Microservice Architecture (翻译:Colstuwjx)

原文发布时间为:2017-07-10

本文作者:Colstuwjx

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:一个更好的可视化微服务架构的方式

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
数据分析:构建可视化报表服务
摘要:本手册为北京云栖 Workshop《云数据·大计算:快速搭建互联网在线运营分析平台》的《数据分析:构建可视化报表服务》篇而准备。主要阐述如何使用Quick BI制作报表,将前面几个实验处理分析得来的数据进行有效的展现和洞察。
6384 0
免费的容器架构可视化工具 | 阿里云应用高可用服务 AHAS 发布重大新特性
采用容器服务后,了解容器之间的关系及依赖是一个比较有挑战的问题。容器化改造后的实际架构模型可能与预想的架构存在较大的差异,架构师或系统运维人员需要精确地了解资源实例的构成和交互情况,存在一定的困难。其次,系统架构在动态演化过程中可能引入了一些不可靠的因素,比如弱依赖变强依赖、局部容量不足、系统耦合过重等,给系统的稳定性带了极大的安全隐患。
21103 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
18989 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
20690 0
日志服务可视化重磅升级!专属你的炫酷仪表盘
前言 日志无处不在,它作为记录世间万物变化的载体,在运维、研发、运营、安全、BI、审计等领域有着广泛的应用场景。伴随着不断发展的业务,日志的可视化分析需求越来越猛烈,直接清晰的可视化结果有助于监控人员、分析人员洞察日志中的关键信息。
4829 0
袋鼠云助力福州市行政(市民)服务中心建设数据可视化大屏展映第二届数字中国建设峰会
5月6日,第二届数字中国建设峰会在福建省福州市召开。 此次峰会以“以信息化培育新动能,用新动能推动新发展,以新发展创造新辉煌”为主题,多部门将在峰会期间发布信息化政策和报告,中央网信办将发布《中国数字建设报告(2018)》,众多国内外相关领域的专家、学者、产业代表出席,各界嘉宾1500多人参会。
2170 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
21678 0
TelecomLocate ---- Android与服务器端实时运动数据传输渲染与轨迹分类可视化
本应用是通过Android应用程序记录用户运动轨迹的数据,并将数据保存在服务器上。服务器上基于Play2框架的web应用程序,可以将运动数据可视化,并进行分类。
225 0
+关注
350
文章
1300
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载