Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<blockquote> <p>How can I scale this tcp/ip based component. This component is deployed on a server and is listening to a port. In future if there's more data that is envisaged at this point that comes from the C++ system we should be able to scale this java component.</p> </blockquote> <p>You normally use a network load-balancer to scale these kind of services across multiple servers. That load-balancer can distribute load using a variety of algorithms, such as:</p> <ul> <li>CPU load (usually measured with snmp)</li> <li>Client ip address (if you need persistence when mapping clients to your services)</li> <li>Number of active sockets</li> <li>etc</li> </ul> <p>Look at <a href="http://haproxy.1wt.eu/" rel="nofollow">HAProxy</a> for a popular open-source load-balancer. <a href="http://www.f5.com/" rel="nofollow">F5</a> has the most popular commercial load-balancer solution.</p> <blockquote> <p>What about security. One thing which I can probably do is employ this communication on secure sockets or probably get encrypted data (any particular encryption that I could use here??). Any other way to take care of security?</p> </blockquote> <ul> <li>As mentioned, SSL is an option, but understand that is a big performance hit on your services if you encrypt on the same hardware that is performing your customer services. One option along these lines is using a commercial load-balancer that implements SSL in hardware; that load-balancer would then forward unencrypted sockets to your TCP services farm.</li> <li>Under some circumstances you can use <a href="http://en.wikipedia.org/wiki/IPsec" rel="nofollow">IPSec</a> network-level encryption; often, this is another network hardware solution. Typically your clients will download an IPSec application that resides on their PC... then they make a connection into your IPSec server, which encrypts between their client and your IPSec termination point</li> <li><a href="http://en.wikipedia.org/wiki/Secure_Shell" rel="nofollow">SSH</a> Tunneling with port-forwarding (low-tech solution)</li> <li><a href="http://tcpcrypt.org/" rel="nofollow">tcpcrypt</a> looks interesting as a future technology, but I'm not sure how mature it is right now.</li> </ul> <blockquote> <p>There is also a requirement of high availability to be satisfied. How do I handle that? How could I possible have redundancy here?</p> </blockquote> <p>A lot depends on what you mean by high availability, and what kind of recovery timing you need. At a high level, you have a few options:</p> <ul> <li>DNS-based HA works if you don't need client to socket mapping persistence; if you use DNS, you need to be willing to accept typical DNS A-record timeouts (usually people don't go lower than ~5 minutes / 300 seconds). This also assumes you find a way to synchronize your databases across multiple sites.</li> <li>Load-balancer solutions. Same issue with synchronizing back-end databases</li> </ul> <p>To do any kind of HA, you probably want to hire a consultant that has a proven track record of implementing these services (if you don't have this kind of resource in-house).</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload