微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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,松耦合,集中集成测试等.有了良好的代码,如果您以后需要分离系统的各个部分,那将会容易得多.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。