SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
Collaborative Peer-to-Peer
   Information Sharing

     Content Query System




        Tom Lendacky
       IBM Corporation
Overview
Distributed Peer-to-Peer Information Sharing System
 Communities
   Collection of related data (i.e. defect data, music, sales)
   Optional password authentication to control data provider(s)
 Content Sources
   Collection of specific data (i.e. Linux defect data, rock, regional sales)
 XML Messages
 Client Request Interface and Control Interface
quot;Pluggablequot; Query Engines
 Allows for any type of information to be returned
 Defined API's and Input/Output formats (XML)
Browser User Interface
 Apache/PHP based UI
 XML results translated to HTML
   XML allows for any type of UI
Background
Initially developed to:
  Provide easier way to access Linux defect data
    Currently must go to each web site to query defect data
  Improve service and support
    Quicker response
  Reduce duplicate effort
    Problem could already be known with a patch in process
    Problem could already be fixed with patch available
But it has many more uses than that...
Community
Community                                                              Community quot;Aquot;

 Collection of related information                  Host A
 Password authentication (optional)                               Host B

   Controls who can provide information               Host C
 Content Sources (specific information)
   Multiple Content Sources supported                                    Host D
     Can specify the same Content Source multiple
     times (i.e.. different information sources)
     Can specify multiple Content Sources


                                                             Host E

                                                                                  Host G

                                                                      Host F




                                                             Community quot;Bquot;
Community...
Community...
 Uses TCP/IP Sockets for connections between Hosts
   Configurable maximum connections limit
   Configurable AutoConnect capability
     Examines (Announce) messages to find new Hosts to connect to
   Configurable Retry capability
     Repeated attempt to connect to quot;Startupquot; connections that are not connected
   quot;Startupquot; connections
     Attempt to connect to specific Hosts during CQS startup
   Connection quot;Listenerquot;
     Listens for requests from Hosts to connect to the Community
   Dedicated connections
     A connection is only used for the Community to which it connected
   Access control
     Based upon IP address
Community...
Community...
 Handshake used to join Community
   Community Name: Verify Community to Join
   Host UUID: Verify connection to/from a unique Host
     Only 1 Connection per Host allowed
     Uses Host UUID (as opposed to IP address) to allow connections from multiple Hosts on a
     single machine
   Authentication: SHA-1 message digest value for newly generated UUID
   and password
     Password does not flow in the clear
 XML messages over connections
   4 byte header (length of message that follows)
   XML message
Content Source
Content Source
                                                                     Community quot;Aquot;
 Part of a Community
 Collection of specific information
 Query input is standardized
                                                Host A
 Uses a Query Engine to interface           ContentSources:
                                                                       Host B
                                            quot;Aquot;
 with the information                                             ContentSources:
                                                                  quot;Bquot; and quot;Cquot;
Host announces Content                               Host C
Sources                                         ContentSources:
                                                quot;Aquot; and quot;Bquot;

 ANNOUNCE message                                                     Host D
                                                                  ContentSources:
   Name and URI of input form                                     quot;Bquot;

   Informs other Hosts of Content Sources
   in the Community
Content Source...
Content Source
 Supports multiple Content Sources
   Both identically or uniquely named
   <CONTENT-SOURCE name=quot;Aquot; module=quot;libA1.soquot; data=quot;db1quot;... />
   <CONTENT-SOURCE name=quot;Aquot; module=quot;libA2.soquot; data=quot;db2quot;... />
   <CONTENT-SOURCE name=quot;Aquot; module=quot;libA2.soquot; data=quot;db3quot;... />
   <CONTENT-SOURCE name=quot;Bquot; module=quot;libB1.soquot; data=quot;db4quot;... />


      Identically named Content Sources are processed sequentially
XML Messages
XML Messages
 Defined format
   <MESSAGE uuid= ttl= hops= reply=... >
      <MESSAGE-HOST... />
      <message-name... >
      </message-name>
   </MESSAGE>
     Attributes on <MESSAGE> tag identify message and purpose
       UUID: Identifies the message, used to avoid processing duplicate requests
       TTL/HOPS: Indicates how many more times the message can be forwarded and how many times it already has
       REPLY: Indicates whether this message is a reply (no=forward to all connected Hosts, yes=return to sender)
     Allows new messages to be created without having to upgrade the Host
       Host processes message that contain a message-name that is recognized
       Host simply forwards/returns messages that are not recognized

 Three defined messages currently
   ANNOUNCE, CONTENT-SOURCES, QUERY-CONTENT
     Reply defined as message-name-REPLY
   Defined XML query language for QUERY-CONTENT
     Both input and output
Request Interface
Request Interface
 Used by a Client User Interface
   Obtain information from a Host and request a Host to perform an action
 Uses TCP/IP Sockets for request initiation
   One request per socket connection
   Access control
     Based upon IP address
 Four defined requests currently
   Get Community names
   Get Content Source name within a Community
   Get Content Source URI for Content Source within a Community
   Start a query for a Content Source within a Community
     Query results returned in XML format
Control Interface
Control Interface
  Provides some administration information and control
  Uses TCP/IP Sockets for control initiation
    One control request per socket connection
    Access control
      Based upon IP address
  Six defined controls currently
    Get Community names
    Get Community information
    Get Community connections (active connections)
    Get ContentSource names within a Community (locally defined only)
    Get ContentSource configuration information within a Community
    Shutdown CQS
Query Engines
Query Engines
 quot;Pluggablequot; interface between Host and information
 Specified on the Content Source configuration statement
   <CONTENT-SOURCE name= uri= module= data= map= />
     MODULE: the path/name of the module to load for this Content Source
     DATA: Query Engine defined value - supplied to the Query Engine during initialization
       Possible use as configuration input
     MAP: Query Engine defined value - supplied to the Query Engine during initialization
       Possible use as configuration input

 Must support define API set
   Five API's
     Startup / Termination related (invoked only once):
       CQELoad: Invoked during CQS startup just after the Query Engine has been loaded
       CQEUnload: Invoked during CQS termination just before the Query Engine is unloaded
     Query related (invoked as a series of calls each time a query request is received):
       CQECreate: Invoked to create a new instance of an object that will be responsible for performing the query
       CQEQuery: Invoked to perform the query
       CQEDestroy: Invoked to cleanup / destroy the instance of the object that performed the query

 Defined XML format for query language
   Input and output
Browser User Interface
Browser UI
 Apache/PHP based
   Defined set of URIs to access the CQS system
     http://hostname/.../CQS
       URI to display the startup webpage
     http://hostname/.../CQS/Communities
       URI to display a webpage of a list of Communities that the Host has joined
     http://hostname/.../CQS/ContentSources/Community
       URI to display a webpage of a list of Content Sources within the specified Community
     http://hostname/.../CQS/ContentSource/Community/ContentSource/Input
       URI to display a webpage of the input form page to submit the query (Refer to documentation on how the form must be
       designed
     http://hostname/.../CQS/ContentSource/Community/ContentSource/Query
       URI to initiate the Query request.
       Results are displayed in table format as they are returned by the participating CQS systems
       Translates XML query results into HTML for presentation on browsers
Project Information
Open Source
 Hosted on DeveloperWorks
   http://oss.software.ibm.com/developerworks/projects/cqs
 Project HomePage
   http://oss.software.ibm.com/developerworks/opensource/cqs/index.html
   Documentation
   Developer Information
   Build Information

Más contenido relacionado

La actualidad más candente

Common gateway interface
Common gateway interfaceCommon gateway interface
Common gateway interfaceAnandita
 
Apache Thrift, a brief introduction
Apache Thrift, a brief introductionApache Thrift, a brief introduction
Apache Thrift, a brief introductionRandy Abernethy
 
Apache Thrift : One Stop Solution for Cross Language Communication
Apache Thrift : One Stop Solution for Cross Language CommunicationApache Thrift : One Stop Solution for Cross Language Communication
Apache Thrift : One Stop Solution for Cross Language CommunicationPiyush Goel
 
Java Servlet Programming under Ubuntu Linux by Tushar B Kute
Java Servlet Programming under Ubuntu Linux by Tushar B KuteJava Servlet Programming under Ubuntu Linux by Tushar B Kute
Java Servlet Programming under Ubuntu Linux by Tushar B KuteTushar B Kute
 
WEB PROGRAMMING UNIT IV NOTES BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT IV NOTES BY BHAVSINGH MALOTHWEB PROGRAMMING UNIT IV NOTES BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT IV NOTES BY BHAVSINGH MALOTHBhavsingh Maloth
 
Modern Web Development with Perl
Modern Web Development with PerlModern Web Development with Perl
Modern Web Development with PerlDave Cross
 
Write FB Bot in Python3
Write FB Bot in Python3Write FB Bot in Python3
Write FB Bot in Python3Jim Yeh
 
Http request&response session 1 - by Vignesh.N
Http request&response session 1 - by Vignesh.NHttp request&response session 1 - by Vignesh.N
Http request&response session 1 - by Vignesh.NNavaneethan Naveen
 

La actualidad más candente (19)

Ruby
RubyRuby
Ruby
 
Common gateway interface
Common gateway interfaceCommon gateway interface
Common gateway interface
 
CGI Presentation
CGI PresentationCGI Presentation
CGI Presentation
 
Cgi
CgiCgi
Cgi
 
CGI Introduction
CGI IntroductionCGI Introduction
CGI Introduction
 
Apache Thrift, a brief introduction
Apache Thrift, a brief introductionApache Thrift, a brief introduction
Apache Thrift, a brief introduction
 
Web technologies: HTTP
Web technologies: HTTPWeb technologies: HTTP
Web technologies: HTTP
 
Apache Thrift : One Stop Solution for Cross Language Communication
Apache Thrift : One Stop Solution for Cross Language CommunicationApache Thrift : One Stop Solution for Cross Language Communication
Apache Thrift : One Stop Solution for Cross Language Communication
 
Psr-7
Psr-7Psr-7
Psr-7
 
HTTP
HTTPHTTP
HTTP
 
Java Servlet Programming under Ubuntu Linux by Tushar B Kute
Java Servlet Programming under Ubuntu Linux by Tushar B KuteJava Servlet Programming under Ubuntu Linux by Tushar B Kute
Java Servlet Programming under Ubuntu Linux by Tushar B Kute
 
WEB PROGRAMMING UNIT IV NOTES BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT IV NOTES BY BHAVSINGH MALOTHWEB PROGRAMMING UNIT IV NOTES BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT IV NOTES BY BHAVSINGH MALOTH
 
Modern Web Development with Perl
Modern Web Development with PerlModern Web Development with Perl
Modern Web Development with Perl
 
Word Press Help Sheet
Word Press Help SheetWord Press Help Sheet
Word Press Help Sheet
 
Common Gateway Interface ppt
Common Gateway Interface pptCommon Gateway Interface ppt
Common Gateway Interface ppt
 
Psr 7 symfony-day
Psr 7 symfony-dayPsr 7 symfony-day
Psr 7 symfony-day
 
Write FB Bot in Python3
Write FB Bot in Python3Write FB Bot in Python3
Write FB Bot in Python3
 
Cgi
CgiCgi
Cgi
 
Http request&response session 1 - by Vignesh.N
Http request&response session 1 - by Vignesh.NHttp request&response session 1 - by Vignesh.N
Http request&response session 1 - by Vignesh.N
 

Destacado

NetBeans Plugin Development Workshop
NetBeans Plugin Development WorkshopNetBeans Plugin Development Workshop
NetBeans Plugin Development Workshopelliando dias
 
Chris Bennett 97th Floor eTourism Summit 2012 Pinterest for Travel Marketers
Chris Bennett 97th Floor eTourism Summit 2012 Pinterest for Travel MarketersChris Bennett 97th Floor eTourism Summit 2012 Pinterest for Travel Marketers
Chris Bennett 97th Floor eTourism Summit 2012 Pinterest for Travel Marketers97th Floor
 
Enabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition LanguageEnabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition Languageelliando dias
 
Developing Plug-Ins for NetBeans
Developing Plug-Ins for NetBeansDeveloping Plug-Ins for NetBeans
Developing Plug-Ins for NetBeanselliando dias
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webelliando dias
 
Getting Started with Capistrano in Ten Easy Steps
Getting Started with Capistrano in Ten Easy StepsGetting Started with Capistrano in Ten Easy Steps
Getting Started with Capistrano in Ten Easy Stepselliando dias
 

Destacado (6)

NetBeans Plugin Development Workshop
NetBeans Plugin Development WorkshopNetBeans Plugin Development Workshop
NetBeans Plugin Development Workshop
 
Chris Bennett 97th Floor eTourism Summit 2012 Pinterest for Travel Marketers
Chris Bennett 97th Floor eTourism Summit 2012 Pinterest for Travel MarketersChris Bennett 97th Floor eTourism Summit 2012 Pinterest for Travel Marketers
Chris Bennett 97th Floor eTourism Summit 2012 Pinterest for Travel Marketers
 
Enabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition LanguageEnabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition Language
 
Developing Plug-Ins for NetBeans
Developing Plug-Ins for NetBeansDeveloping Plug-Ins for NetBeans
Developing Plug-Ins for NetBeans
 
Spring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento webSpring + Tapestry Um novo paradigma de desenvolvimento web
Spring + Tapestry Um novo paradigma de desenvolvimento web
 
Getting Started with Capistrano in Ten Easy Steps
Getting Started with Capistrano in Ten Easy StepsGetting Started with Capistrano in Ten Easy Steps
Getting Started with Capistrano in Ten Easy Steps
 

Similar a Collaborative Peer-to-Peer Information Sharing

Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP TutorialLorna Mitchell
 
Introduction server Construction
Introduction server ConstructionIntroduction server Construction
Introduction server ConstructionJisu Park
 
Networking Java Socket Programming
Networking Java Socket ProgrammingNetworking Java Socket Programming
Networking Java Socket ProgrammingMousmi Pawar
 
Virtual Hosting With Apache and Linux
Virtual Hosting With Apache and LinuxVirtual Hosting With Apache and Linux
Virtual Hosting With Apache and LinuxIresha Rubasinghe
 
ASP.NET Mvc 4 web api
ASP.NET Mvc 4 web apiASP.NET Mvc 4 web api
ASP.NET Mvc 4 web apiTiago Knoch
 
Documenting REST APIs
Documenting REST APIsDocumenting REST APIs
Documenting REST APIsTom Johnson
 
some fundamental topics to remember when starting with HTML
some fundamental topics to remember when starting with HTMLsome fundamental topics to remember when starting with HTML
some fundamental topics to remember when starting with HTMLfaiz324545
 
Web II - 02 - How ASP.NET Works
Web II - 02 - How ASP.NET WorksWeb II - 02 - How ASP.NET Works
Web II - 02 - How ASP.NET WorksRandy Connolly
 
Build and Manage Your APIs with Amazon API Gateway
Build and Manage Your APIs with Amazon API GatewayBuild and Manage Your APIs with Amazon API Gateway
Build and Manage Your APIs with Amazon API GatewayAmazon Web Services
 
Unit8 java
Unit8 javaUnit8 java
Unit8 javamrecedu
 
Deploying RDF Linked Data via Virtuoso Universal Server
Deploying RDF Linked Data via Virtuoso Universal ServerDeploying RDF Linked Data via Virtuoso Universal Server
Deploying RDF Linked Data via Virtuoso Universal Serverrumito
 
Web Server Administration
Web Server AdministrationWeb Server Administration
Web Server Administrationwebhostingguy
 

Similar a Collaborative Peer-to-Peer Information Sharing (20)

Web Services Tutorial
Web Services TutorialWeb Services Tutorial
Web Services Tutorial
 
Web services tutorial
Web services tutorialWeb services tutorial
Web services tutorial
 
Web Services PHP Tutorial
Web Services PHP TutorialWeb Services PHP Tutorial
Web Services PHP Tutorial
 
flask.pptx
flask.pptxflask.pptx
flask.pptx
 
Introduction server Construction
Introduction server ConstructionIntroduction server Construction
Introduction server Construction
 
Networking Java Socket Programming
Networking Java Socket ProgrammingNetworking Java Socket Programming
Networking Java Socket Programming
 
Networking
NetworkingNetworking
Networking
 
Virtual Hosting With Apache and Linux
Virtual Hosting With Apache and LinuxVirtual Hosting With Apache and Linux
Virtual Hosting With Apache and Linux
 
ASP.NET Mvc 4 web api
ASP.NET Mvc 4 web apiASP.NET Mvc 4 web api
ASP.NET Mvc 4 web api
 
Documenting REST APIs
Documenting REST APIsDocumenting REST APIs
Documenting REST APIs
 
some fundamental topics to remember when starting with HTML
some fundamental topics to remember when starting with HTMLsome fundamental topics to remember when starting with HTML
some fundamental topics to remember when starting with HTML
 
Web II - 02 - How ASP.NET Works
Web II - 02 - How ASP.NET WorksWeb II - 02 - How ASP.NET Works
Web II - 02 - How ASP.NET Works
 
Build and Manage Your APIs with Amazon API Gateway
Build and Manage Your APIs with Amazon API GatewayBuild and Manage Your APIs with Amazon API Gateway
Build and Manage Your APIs with Amazon API Gateway
 
DNS & HTTP overview
DNS & HTTP overviewDNS & HTTP overview
DNS & HTTP overview
 
Web server
Web serverWeb server
Web server
 
www and http services
www and http serviceswww and http services
www and http services
 
Unit8 java
Unit8 javaUnit8 java
Unit8 java
 
5-WebServers.ppt
5-WebServers.ppt5-WebServers.ppt
5-WebServers.ppt
 
Deploying RDF Linked Data via Virtuoso Universal Server
Deploying RDF Linked Data via Virtuoso Universal ServerDeploying RDF Linked Data via Virtuoso Universal Server
Deploying RDF Linked Data via Virtuoso Universal Server
 
Web Server Administration
Web Server AdministrationWeb Server Administration
Web Server Administration
 

Más de elliando dias

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 

Más de elliando dias (20)

Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 

Último

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 

Último (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

Collaborative Peer-to-Peer Information Sharing

  • 1. Collaborative Peer-to-Peer Information Sharing Content Query System Tom Lendacky IBM Corporation
  • 2. Overview Distributed Peer-to-Peer Information Sharing System Communities Collection of related data (i.e. defect data, music, sales) Optional password authentication to control data provider(s) Content Sources Collection of specific data (i.e. Linux defect data, rock, regional sales) XML Messages Client Request Interface and Control Interface quot;Pluggablequot; Query Engines Allows for any type of information to be returned Defined API's and Input/Output formats (XML) Browser User Interface Apache/PHP based UI XML results translated to HTML XML allows for any type of UI
  • 3. Background Initially developed to: Provide easier way to access Linux defect data Currently must go to each web site to query defect data Improve service and support Quicker response Reduce duplicate effort Problem could already be known with a patch in process Problem could already be fixed with patch available But it has many more uses than that...
  • 4. Community Community Community quot;Aquot; Collection of related information Host A Password authentication (optional) Host B Controls who can provide information Host C Content Sources (specific information) Multiple Content Sources supported Host D Can specify the same Content Source multiple times (i.e.. different information sources) Can specify multiple Content Sources Host E Host G Host F Community quot;Bquot;
  • 5. Community... Community... Uses TCP/IP Sockets for connections between Hosts Configurable maximum connections limit Configurable AutoConnect capability Examines (Announce) messages to find new Hosts to connect to Configurable Retry capability Repeated attempt to connect to quot;Startupquot; connections that are not connected quot;Startupquot; connections Attempt to connect to specific Hosts during CQS startup Connection quot;Listenerquot; Listens for requests from Hosts to connect to the Community Dedicated connections A connection is only used for the Community to which it connected Access control Based upon IP address
  • 6. Community... Community... Handshake used to join Community Community Name: Verify Community to Join Host UUID: Verify connection to/from a unique Host Only 1 Connection per Host allowed Uses Host UUID (as opposed to IP address) to allow connections from multiple Hosts on a single machine Authentication: SHA-1 message digest value for newly generated UUID and password Password does not flow in the clear XML messages over connections 4 byte header (length of message that follows) XML message
  • 7. Content Source Content Source Community quot;Aquot; Part of a Community Collection of specific information Query input is standardized Host A Uses a Query Engine to interface ContentSources: Host B quot;Aquot; with the information ContentSources: quot;Bquot; and quot;Cquot; Host announces Content Host C Sources ContentSources: quot;Aquot; and quot;Bquot; ANNOUNCE message Host D ContentSources: Name and URI of input form quot;Bquot; Informs other Hosts of Content Sources in the Community
  • 8. Content Source... Content Source Supports multiple Content Sources Both identically or uniquely named <CONTENT-SOURCE name=quot;Aquot; module=quot;libA1.soquot; data=quot;db1quot;... /> <CONTENT-SOURCE name=quot;Aquot; module=quot;libA2.soquot; data=quot;db2quot;... /> <CONTENT-SOURCE name=quot;Aquot; module=quot;libA2.soquot; data=quot;db3quot;... /> <CONTENT-SOURCE name=quot;Bquot; module=quot;libB1.soquot; data=quot;db4quot;... /> Identically named Content Sources are processed sequentially
  • 9. XML Messages XML Messages Defined format <MESSAGE uuid= ttl= hops= reply=... > <MESSAGE-HOST... /> <message-name... > </message-name> </MESSAGE> Attributes on <MESSAGE> tag identify message and purpose UUID: Identifies the message, used to avoid processing duplicate requests TTL/HOPS: Indicates how many more times the message can be forwarded and how many times it already has REPLY: Indicates whether this message is a reply (no=forward to all connected Hosts, yes=return to sender) Allows new messages to be created without having to upgrade the Host Host processes message that contain a message-name that is recognized Host simply forwards/returns messages that are not recognized Three defined messages currently ANNOUNCE, CONTENT-SOURCES, QUERY-CONTENT Reply defined as message-name-REPLY Defined XML query language for QUERY-CONTENT Both input and output
  • 10. Request Interface Request Interface Used by a Client User Interface Obtain information from a Host and request a Host to perform an action Uses TCP/IP Sockets for request initiation One request per socket connection Access control Based upon IP address Four defined requests currently Get Community names Get Content Source name within a Community Get Content Source URI for Content Source within a Community Start a query for a Content Source within a Community Query results returned in XML format
  • 11. Control Interface Control Interface Provides some administration information and control Uses TCP/IP Sockets for control initiation One control request per socket connection Access control Based upon IP address Six defined controls currently Get Community names Get Community information Get Community connections (active connections) Get ContentSource names within a Community (locally defined only) Get ContentSource configuration information within a Community Shutdown CQS
  • 12. Query Engines Query Engines quot;Pluggablequot; interface between Host and information Specified on the Content Source configuration statement <CONTENT-SOURCE name= uri= module= data= map= /> MODULE: the path/name of the module to load for this Content Source DATA: Query Engine defined value - supplied to the Query Engine during initialization Possible use as configuration input MAP: Query Engine defined value - supplied to the Query Engine during initialization Possible use as configuration input Must support define API set Five API's Startup / Termination related (invoked only once): CQELoad: Invoked during CQS startup just after the Query Engine has been loaded CQEUnload: Invoked during CQS termination just before the Query Engine is unloaded Query related (invoked as a series of calls each time a query request is received): CQECreate: Invoked to create a new instance of an object that will be responsible for performing the query CQEQuery: Invoked to perform the query CQEDestroy: Invoked to cleanup / destroy the instance of the object that performed the query Defined XML format for query language Input and output
  • 13. Browser User Interface Browser UI Apache/PHP based Defined set of URIs to access the CQS system http://hostname/.../CQS URI to display the startup webpage http://hostname/.../CQS/Communities URI to display a webpage of a list of Communities that the Host has joined http://hostname/.../CQS/ContentSources/Community URI to display a webpage of a list of Content Sources within the specified Community http://hostname/.../CQS/ContentSource/Community/ContentSource/Input URI to display a webpage of the input form page to submit the query (Refer to documentation on how the form must be designed http://hostname/.../CQS/ContentSource/Community/ContentSource/Query URI to initiate the Query request. Results are displayed in table format as they are returned by the participating CQS systems Translates XML query results into HTML for presentation on browsers
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. Project Information Open Source Hosted on DeveloperWorks http://oss.software.ibm.com/developerworks/projects/cqs Project HomePage http://oss.software.ibm.com/developerworks/opensource/cqs/index.html Documentation Developer Information Build Information