警告!我在这里有点钓鱼之旅,我甚至不确定我问的问题是否完全有意义.请善意回复你!:)
我最近接手了一个目前基于Java + Linux + Tomcat + MySQL的项目.现在,该系统基本上只是一个在后台有一些cron工作的网站,可以移动一些数据等等.在与产品经理合作开发优先顺序时,很清楚他想做什么我需要开始开发面向服务的体系结构(SOA < - buzz word warning!),最终我将结合使用Web服务器和应用程序服务器.注意:我正在考虑转向Glassfish v3.
目前,身份验证和授权在Java代码中处理,用户信息存储在MySQL数据库中.至少在我看来,我需要将其拆分为一个单独的身份验证服务(否则,最终将会出现一堆重复的代码来处理用户身份验证和授权).
我一直在研究单点登录(SSO)类型解决方案并进行一些研究.从我可以收集的信息来看,OpenSSO已被Oracle正式删除,但被ForgeRock收录,现在被称为OpenAM.这似乎非常接近我想要的,但由于我已经有一个基于MySQL的系统,我宁愿有一些东西支持它(或其他一些RDBMS).我在Stack Overflow上找到了它,它似乎表明它基本上是LDAP或什么也没有.
有没有办法让OpenSSO/OpenAM与数据库通信以进行身份验证和授权?
我的问题是:
OpenSSO/OpenAM有哪些其他选择?LDAP是否可行?注意:执行"OpenAM vs"谷歌搜索不会产生太多影响.人们倾向于"自己动手"吗?
任何有助于教育我的关于此主题的想法/建议/链接将不胜感激.提前感谢您的耐心和帮助.
我们的一些合作伙伴告诉我们,我们的软件需要与企业服务总线进行交互.在对此进行了一些研究后,我的直觉就是说这只是嗡嗡声说我们需要一种以平台为依据的方式来回传递消息.我只是想了解我们的合作伙伴告诉我们的事情.我是否正确地拒绝合作伙伴的要求,只是试图让我们的软件更符合流行语,或者他们是否告诉我们应该听的东西(即使用buzzspeak编码)?
如果你想在Windows下使用排队产品进行持久消息传递,运行.NET 2.0及更高版本,那么今天存在哪些MSMQ替代品?我知道ActiveMQ(http://activemq.apache.org/),我看过WSMQ的引用(指向http://wsmq.net),但该网站似乎已经关闭.
还有其他选择吗?
我是一个缺乏经验的Java开发人员,试图围绕一些基本的中间件/ SOA概念和技术,特别是:
在网上/维基百科上查看每一个之后,我能够(大部分)获得这些中的每一个都不错的定义.我不理解的是所有这些技术/概念如何在后端协同工作以提供第二/业务层解决方案.
有人可以举一个使用所有这些技术/概念的架构的例子,并解释它们在整体解决方案中扮演的角色吗?一旦我看到一个工作示例,我相信它会帮助我连接大部分点.
编辑:由于我添加了赏金,我有几个答案建议阅读书籍.虽然我很欣赏这里的所有反馈,但我根本无法分享300个声望点的答案,基本上归结为"RTM"(特别是当我平了,并且买不起手册!)重申,赏金和明确的答案将发送给能够在一个有意义的实际例子中击中所有这些子弹的人.这不一定是中间件的纲要!只是一段或两段,展示了如何将所有这些结合在一起以生成Java业务层解决方案.再次感谢.
我以为我知道REST /"RESTFul",restfulservices,webservices,SOA和微服务是什么,但我遇到了很多不同的定义,我得出的结论是这些术语被过度使用,误用或者只是定义得很糟糕.
我希望能清楚地理解上述术语代表什么,它们的具体定义,它们的共性和差异,优点和缺点,最重要的是底线 - 为了适当地使用这些术语而要记住的最重要的事情.
我来自MoM的背景.我想我从概念上理解ESB.但是,在建筑方面做出选择时,我不太确定两者之间的实际差异.
这是我想知道的
1)任何在线的良好链接可以帮助我在这方面.
2)有人可以告诉我使用一个在另一个上有意义.
任何帮助都会有用.
Heroku将其Twelve-Factor App清单中的日志描述为简单的事件流:
日志是从所有正在运行的进程和支持服务的输出流收集的聚合的,按时间排序的事件流.原始格式的日志通常是文本格式,每行一个事件(尽管异常的回溯可能跨越多行).日志没有固定的开始或结束,但只要应用程序正在运行,就会持续流动.
此外,应用程序应该只写日志stdout,将任务留给"环境".
十二因素应用程序从不关心其输出流的路由或存储.它不应该尝试写入或管理日志文件.相反,每个正在运行的进程将其未缓冲的事件流写入stdout.在本地开发期间,开发人员将在其终端的前台查看此流以观察应用程序的行为.
在暂存或生产部署中,每个流程的流将由执行环境捕获,与来自应用程序的所有其他流进行整理,并路由到一个或多个最终目的地以供查看和长期归档.这些归档目标对应用程序不可见或可由应用程序配置,而是由执行环境完全管理.开源日志路由器(例如Logplex和Fluent)可用于此目的.
那么在可靠性,效率和易用性方面,在docker环境中实现这一目标的最佳方法是什么?我想以下问题浮现在脑海中:
docker logs)是否安全?stdout直接重定向到文件(磁盘空间)吗?docker run --volume=[])?在基于微服务的系统中实现数据库一致性的最佳方法是什么?
在柏林的GOTO,Martin Fowler谈论微服务,他提到的一个"规则"是保留"每服务"数据库,这意味着服务不能直接连接到另一个服务"拥有"的数据库.
这是超级优雅和优雅,但在实践中它变得有点棘手.假设您有一些服务:
现在,客户在您的前端进行购买,这将调用订单管理服务,这将保存数据库中的所有内容 - 没问题.此时,还会拨打忠诚度计划服务,以便从您的帐户中记入/记入积分.
现在,当所有内容都在同一个DB/DB服务器上时,一切都变得简单,因为您可以在一个事务中运行所有内容:如果忠诚度计划服务无法写入数据库,我们可以回滚整个事情.
当我们在多个服务中执行数据库操作时,这是不可能的,因为我们不依赖于一个连接/利用运行单个事务.什么是保持事物一致并过上幸福生活的最佳模式?
我非常渴望听到你的建议!并提前致谢!
寻找书籍,博客,网站或视频.
目前,我从Udi Dahan和Greg Young的博客中获得了很多价值,但我想知道是否还有其他专家值得一试?