web-services – 新手的实用SOA

我是SOA世界的新手.因此,我正在研究一些“SOA框架/技术”,并试图了解如何利用它们来构建高度可扩展(Facebook类)的网站.

我想在这里解决几个“痛苦”:

>可组合性(管理依赖项,Pub / Sub)
>服务的语言独立性
>可扩展性&性能
>高可用性

我研究了一些能够回答上述标准子集的技术:

> Thrift – Facebook的跨平台RPC平台
> WCF支持SOAP,JSON和amp; REST,因此它可以被认为是语言可互操作的.生成可用于生成Java代理的WSDL文件.
> Microsoft DSS – 刚刚在我的调查中包含它,但它似乎并不相关,因为它是高度国家驱动和.NET特定的.
>网络服务

现在,我理解如何从上面得到可组合性和语言独立性的某些方面.但是,我没有找到关于如何使用上述/其他工具实现可伸缩性和高可用性的更多具体信息(不是嗡嗡声).最后我得到了我的问题:

如何利用SOA技术来解决我上面定义的痛苦?我在哪里可以找到技术指南?我正在寻找的不仅仅是系统图,而是实际的库,代码示例,APIS ……

解决方法

我认为问题更多地涉及所涉及的概念而不是工具.项目答案:

>理解并内化bounded context.保持不相关的部分将其重要性分开,以便在不同的服务上实现真正的重用.相关技术对此没有帮助,您可以在适当的上下文中分离应用程序,您可以适当地重用不同的服务.
>基于已知协议的清晰通信端点允许使用不同技术实现不同的部分
>让操作像基于不同协议的独立操作一样流动,为您提供了许多可以添加层的地方.是使用大量资源的整个过程的特定子过程,服务器不能再使用它,只需移动到单独的服务器.负载不断增长,并且该服务器不再使用它,添加额外的服务器和负载平衡.您还有更多机会使用缓存和连接池.
>拥有一个需要始终可用的关键子流程,添加服务器以便进行故障转移.有一个需要一直“可用”的整个过程,使用队列可以在以后处理.

你真的需要支持这种类型的负载吗?设置与特定方案相关的适当性能/负载/互操作性目标.如果你真的需要支持这种类型的负载,我建议你让一个人在船上处理它.

如果它是最终可能的负载,则识别有界上下文并设计具有SOA思维模式的那些之间的交互.保持代码清洁是您需要做的其余工作,在代码库中使用TDD,松耦合,集中集成测试等.有了良好的代码,如果您以后需要分离系统的各个部分,那将会容易得多.

相关文章

Mip是什么意思以及作用有哪些
怎么测试Mip页面运行情况
MIP安装的具体步骤有哪些
HTML添加超链接、锚点的方法及作用详解(附视频)
MIP的规则有哪些
Mip轮播图组件中的重要属性讲解