Hiitch Server Design Overview  

August 8th, 2007

Comment icon1 Comment

Server Design Overview

The Hiitch server is a multi-threaded application server that you can tune to scale it to your desired hardware setup. It also implements customizable security features that you can use to secure your own network’s integrity and privacy. Hence, understanding some of the key concepts in its design implementation is important. We will begin by describing the detail interaction process that goes on in the server that is unique to every individual Hiitch network implementation.

Server Interaction Process
Before any information is communicated between the client and the server, the clients will first request for the authenticity of the server. Each client has an associated digital certificate that ties it to a particular server. The client will then verify the digital signature to see if the content is coming from the intended server and proceed to send its confidential information to sign in to the server. This whole verification process is unique to each network. During the server installation process, our default script will assist you to generate a set of public and private key pair, also known as a digital certificate, that identifies your particular network. Without generating this digital certificate and exporting the cert to your clients, the integrity of your network can be easily compromised. Once the verification process is correctly completed, the clients will start a new secure session with the server.

Server Threading Model
Once a secure session has been authenticated and started on the server, its threading model kicks in. All clients requests are harvested and then independently processed by a pool of worker threads. You can tune and configure the total number of threads you want as socket harvesters and the number of worker threads attached to each socket harvester. The flexibility of the threading model will enable you to control the performance ratio between accepting requests and processing instructions on each server. Socket harvester threads are responsible for receiving incoming requests and then queue them up for processing by worker threads. Worker threads are responsible to resolve incoming requests to a combination of instructions and then processing those instructions to satisfy the requests. The result of this design is a very advance, efficient and scalable server that you can optimize with your dedicated hardware setup.

Server Performance Considerations
The Hiitch server was also designed to work with other techniques that can help you to easily and cheaply scale your network. A few of these techniques that you can use in combination are load balancing, network file system (NFS), high availability and etc. With a good amount of bandwidth, you can improve your social network performance by load balancing multiple Hiitch servers on a few old computers sharing their storage space using NFS. Hiitch servers will work seamlessly across the entire cluster of machines as if they were one single computer. High availability is a build in feature on Hiitch servers, although not extensive but it should be reasonable enough to meet your average needs.

Future Server Developments
Future developments will move toward a peer to peer (P2P) Hiitch servers system with clients that can connect across different networks securely and dynamically.

If you are interested to read more, other earlier technical articles about Hiitch can be found here.

File iconFiled under: Tips and Tricks, Features User iconby geek | Tack iconAdd Comments
AddThis Social Bookmark Button

Software Components Overview of Hiitch  

August 1st, 2007

Comment iconNo Comments

The Hiitch platform consists of three basic software components. These components are aggregated together on the desktop to produce a seamless real time social networking system. In due time more components may be added to provide richer functionality and online services but we will just focus on these three components for now.

Hiitch Components OverviewHiitch Server
The server is the most critical component of the entire platform. It manages all the critical information and the security of the platform. The Hiitch server is a very advanced piece of software. It understands complex instructions and allow the clients to interact with it through pure XML. It was designed to function very much like our human brain. At the core, it is preloaded by a set of generic instructions that are common to many online services provided by web servers. However, it is far more advanced than today’s web servers in the way it processes and understands information. A typical interaction with the server starts with the client communicating a set of XML instructions to the server. The server then processes the client’s XML request and resolves them into a combination of runtime instructions. These instructions are then aggregated to perform a complex operation. The server will also determine at this point if the requesting client is part of the system and is authorized to carry out those operations. If all is well, it executes and processes the request and returns any results. Each interaction between the server and the client are done on a dedicated pool of threads that provides the parallel processing nature of the server. Depending on your hardware, you can decide on how you want to scale the server to meet your number crunching needs by tuning the threading model. You can also easily customize the server’s runtime behavior and operations by adjusting the instruction set that it is preloaded with. We will discuss more about the details of the server on another post. ;)

Hiitch IM Server
Hiitch was never meant to be an instant messaging (IM) system. IM in Hiitch is just another feature that we provided as a means of communication and not its defining characteristic. Hiitch is a social networking platform which has IM facilities among many others and not the other way around. With that said, the IM facilities in Hiitch is very much a peer to peer (P2P) system. The IM facilities should be more accurately called a routing facility than a chat server. The reason for this is that, the IM server does nothing more than route the interaction between both clients to each other. It does no processing except to work with the Hiitch server to determine if the clients are authorized to use the system and to notify both parties of any incoming initiation for interactions. There is a need for this routing facility because many networks are not designed or configured to work with a P2P system. The IM facilities on Hiitch is still very much a work in progress and you will see more of it in later stages of our development.

External Services
External services are not connected to the Hiitch server in any way. Client developers are free and encouraged to implement facilities and features of their own through this avenue. Although external services are not considered part of the Hiitch platform, but it is still part of the social interaction process that the user is experiencing on their desktop. We have implemented two examples on the client that we thought was useful. The first one is the delivery of interesting events as an autosuggestion to the user based on his/her location and profile. The second is the real time updating of the user’s shout message and default picture to our web widget that can be found on our blog. Developers desiring to extend this portion of the Hiitch platform do not need to understand how the Hiitch system functions but are still able to integrate their software into our social networking experience.

You can read more about Hiitch’s Network Connectivity Overview here.

I hope that this article will get you excited about developing with and on the Hiitch platform. You are encouraged to sign up an account with our default network and use it as a means to contact us or interact with other developers of the Hiitch platform. Just download the default client and join us today as part of our community!

File iconFiled under: Tips and Tricks, Features User iconby geek | Tack iconAdd Comments
AddThis Social Bookmark Button