文档章节

实践SOA架构并写了点代码

r00txx
 r00txx
发布于 2016/10/24 16:52
字数 914
阅读 70
收藏 5

项目的API越来越多了,错综复杂,很多API管理混乱,不知道什么应用调用了什么API,每个API的数据具体如何。。这个时候,天空出现了三个字“SOA”。。什么是SOA,我的理解简单来说就是把服务做成分布式, 高可用,可统计的这么一个玩意,俗称面向服务架构体系。

那怎么实践SOA呢?

有现成的, 例如 dubbo, Consul, Thrift(姑且算是有点沾边吧,实际上这玩意是多语言之间的RPC,可以配合搞可用储存做SOA的机型)。 现在国内比较热的应该是 dubbo,是阿里做的, 之前用过一下,但是这玩意功能是强大, 不过客户端语言貌似只支持 java, C++,现在咱们项目的技术栈主流是PHP, golang所以暂时不考虑了,而且个人觉得有点臃肿,可能因为功能很强大吧。。。。

Thrift 也是一个选择, 可以配合 Zookeeper来架构一个SOA的基形, 而且支持N种语言, 性能也不错

Consul国外挺多人貌似评价不错, 不过个人没玩过,不太了解。。

 

我们这次选择尝试自己做一个轮子, 做一个SOA的基形,功能慢慢再加上去吧。

下面是我们整个的模块架构

目前我们的项目架构基本就是这样, 不同的API散落在不同的服务器上, 因为原来有各个端,所以PHP一套, java一套, golang也一套,我们先打算把API整理好,主要达到下面的目的。

1.   梳理各个API服务,根据访问的流量考虑, 合理分配到不同的服务器

2.   统计各API的流量情况, 供应者是谁(就是哪台服务器), 消费者是谁(就是哪个应用调用了)

3.   接口透明化, 以后要做一个API都要问问身边的同事, 接口地址多少啊? URL多少啊?之类的,现在直接把这块封装到 一个叫注册中心的玩意里面, 直接用   模块/服务名称  这样的形式调用

4.  多语言一个玩, 可以java写服务,PHP调用, 或者换过来,或者选其他语言等等

 

 

整体的技术架构

1. 因为是工作上用到,初期第一版的注册中心先用mysql,本来已经做好了集群了(本来想选用ZK的,但是考虑到增加运维不必要的压力,mysql完全够用了)

2.   provider通信这块先用golang试下水做做, 看看性能如何吧。。这个性能上不去肯定是不行的后期

3.  分布式, 负载均衡, 权限控制这些功能慢慢再加上去, 初步考虑封装好,放在消费者调用API之前这一层, 避免供应者容器二次连接通信,参考了一下dubbo,好像他们也是这样做的,当然人家都是java,持久运行,不用考虑这个

4. 需要快速写个注册中心的展示界面,有没有大神参与一起写写啊?公司人手不够啊

 

因为这个也不属于目前工作的业务范围,只是先试水做出来,所以写了一些代码放到 github上,其实也是接触SOA不多, 架构上应该有很多考虑不周,欠妥的地方,慢慢完善吧~~ :)

 

代码地址:  https://github.com/r00tjimmy/ttsoa,  ttsoa, 代码会不断更新,有兴趣的请提点反馈意见,谢谢~

 

 

© 著作权归作者所有

r00txx
粉丝 0
博文 20
码字总数 7588
作品 0
广州
架构师
私信 提问
AgileEAS.NET平台视频会议培训第一辑-AgileEAS.NET平台介绍及药品系统的SAAS搭建演练

一、AgileEAS.NET 5.0预告 最近忙着准备AgileEAS.NET 5.0的东西,所以也忙的没有向大家分享有关于AgileEAS.NET平台及相关的快速开发技术,AgileEAS.NET 5.0版本将是一个具体里程碑意思的版本...

agilelab
2011/07/19
0
0
SOA

SOA,从不知道这三个字母什么意思误以为是SOAP写了P字母,到明确了是基于服务的架构,从教授对于课程的讲解到亲自动手体会了一点点关于SOA的程序。偶尔聊天时,一位算是技术的小牛说SOA早过时...

古源圆
2010/03/10
163
0
市场是衡量一切的标准

“少年不知愁滋味,为赋新词强说愁,而今识愁滋味,却道天凉好个秋!”,这就是我对这些年我职业发展的比较贴近的比喻。 遥想当年,年少轻狂的我,凭借自己学习来的一些技术皮毛,一直标榜是...

边缘行者
2015/11/30
56
1
.NET应用架构设计—面向查询服务的参数化查询设计(分解业务点,单独配置各自的数据查询契约)

阅读目录: 1.背景介绍 2.对业务功能点进行逻辑划分(如:A、B、C分别三个业务点) 2.1.配置映射关系,对业务点配置查询契约(构造VS插件方便生成查询契约) 2.2.将配置好的映射策略文件放在...

王清培
2014/02/06
0
0
SOA成功之关键最佳实践

  要取得SOA部署的成功,必须先建立起核心架构领导团队,以确保付出的努力符合需求、并指导架构的发展。针对架构的最佳实践可分为重用、数据管理等几个不同的方面。    SOA的重用不仅仅是...

肖勇
2009/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
700
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
39
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
25
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
74
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
73
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部